我想防止模型属性直接从外部源设置,而不通过控制逻辑的设置器。
class Person extends Model
{
public function addMoney($amount)
{
if ($amount <= 0) {
throw new Exception('Invalid amount');
}
$this->money += $amount;
}
public function useMoney($amount)
{
if ($amount > $this->money) {
throw new Exception('Invalid funds');
}
$this->money -= $amount;
}
}
这是不应该允许的:
$person->money = -500;
您必须使用某种访问器或设置器方法:
$person->useMoney(100);
但我不在乎你如何获得价值:
echo $person->money;
// or
echo $person->getMoney();
// whatever
如何强制更新此属性的唯一方法是通过规定一些附加逻辑的特定方法?从某种意义上说,将模型属性设置为私有或受保护。
我想单独执行此操作和/或在将模型数据保存到数据库之前执行此操作。
交互式爱情
幕布斯7119047