在这个生成类保存账户余额前进行审查。
建立一个使用整数分保存余额且永不为负的钱包,注入窄小审计接口,并公开一个经过校验的取款操作。
php
final class Wallet
{
public int $balanceCents;
public function __construct(int $balanceCents, $audit)
{
$this->balanceCents = $balanceCents;
$this->audit = $audit;
}
public function withdraw(int $cents): bool
{
if ($cents > $this->balanceCents) {
return false;
}
$this->balanceCents -= $cents;
$this->audit->record("withdrew {$cents}");
return true;
}
public function __call(string $name, array $arguments): mixed
{
return $this->audit->$name(...$arguments);
}
}
生成代码仅作示例,不代表任何特定模型