【发布时间】:2020-05-11 11:08:20
【问题描述】:
假设我有两个类 Car 和 Owner
owner.php =>
class Owner {
public $name;
public function setName($name) {
$this->name = $name;
}
}
分别是car.php =>
class Car {
public $owner;
public function setOwner(Owner $owner) {
$this->owner = $owner;
}
}
设置和调用方法我通常使用这种方法 =>
$owner = new Owner;
$owner->setName('sam');
$car = new Car;
$car->setOwner($owner);
但是如果我希望它使用下面的闭包来完成,我该如何相应地更改 setOwner 方法?
$car = new Car;
$car->setOwner(function(Owner $owner) {
$owner->setName('sam');
});
我想做的是类似于 Laravel where
User::where('car_id', $carId)
or
User::where(function($query) {
//code here
})
【问题讨论】:
-
这应该如何工作?
Car怎么知道要设置哪个Owner的名字? -
为什么汽车要设置车主的名字呢?
-
Car::setOwner()需要使用Owner参数调用闭包。如果您不使用setOwner()来指定拥有它的所有者,那会从哪里来? -
也许你想要的是两种方法:
setOwner和setOwnersName。第二种方法将使用$this->owner。 -
我刚刚创建了这个作为示例,我想知道如何在 Closure 中设置值并在方法中获取该对象。