我目前正致力于一个小型在线游戏的成就系统.成就实体基本上有4个属性:
> id
>赢了
>赢了
>进步
最后一个应该是百分比,意思是0到100之间的数字.为了确保数据库中没有保存大于100或小于0的数字,我的setter方法看起来如下(我正在使用Symfony2 / Doctrine ORM):
public function setProgress($progress) { $this->progress = max(min($progress,100),0); return $this; }
这里重要的一行是max(min($progress,0).
您应该考虑从Symfony2的
the validation component中为您的实体添加一些约束.
use Symfony\Component\Validator\Constraints as Assert; class Achievement { /** * @Assert\Range(min=0,max=100) */ protected progress; }
例如,验证表单时会自动调用验证器服务,但您甚至可以通过获取验证器服务(例如在控制器中)手动调用它.
$achievement = new Achievement(); $errors = $this->get('validator')->validate($achievement);