PHP:检查整数是否在某个间隔内

MrR*_*MrR 8 php attributes doctrine symfony

我目前正致力于一个小型在线游戏的成就系统.成就实体基本上有4个属性:

  • ID
  • earnedBy
  • earnedOn
  • 进展

最后一个应该是百分比,意味着0到100之间的数字.为了确保数据库中没有保存大于100或小于0的数字,我的setter方法看起来如下(我正在使用Symfony2/Doctrine ORM):

public function setProgress($progress)
    {
        $this->progress = max(min($progress, 100), 0);

        return $this;
    }
Run Code Online (Sandbox Code Playgroud)

这里的重要一点是max(min($progress, 100), 0).

它工作得很好,我只是想问,如果PHP中还有另一个内置函数正在做那件事,如果我正在做的事情是好的(关于良好的开发风格)

Ger*_*rry 3

您应该考虑通过Symfony2 的验证组件对您的实体添加一些约束。

use Symfony\Component\Validator\Constraints as Assert;

class Achievement
{
   /**
    * @Assert\Range(min=0, max=100)
    */
    protected progress;
}
Run Code Online (Sandbox Code Playgroud)

例如,在验证表单时,会自动调用验证器服务,但您甚至可以通过获取验证器服务来手动调用它,例如在控制器中。

$achievement = new Achievement();
$errors = $this->get('validator')->validate($achievement);
Run Code Online (Sandbox Code Playgroud)