我在 MySQL 中有一个数据库表,其主键定义如下:
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`)
我已经为表格创建了模型。我正在使用 Zend Framework v1,没有 ORM,但是这个问题应该适用于所有模型实现。
现在我想创建一个允许我抓取的函数id
:
public static function getById ($id) {
$id = intval($id);
if ($id < 1) {
throw new Exception('bad id');
}
// business logic and stuff
return $stuff;
}
这种方法的原因是双重的。首先,表单输入,包括数字,通常作为字符串从视图中读取。其次,无效字符串(例如'asdf'
)在强制转换后会变为零,从而引发异常。但是,仍有许多无效字符串可能会绕过检查:
echo intval('1asdf');
输出:
1
我尝试过的其他方法包括:
if (intval($id) === 0)
if ($id == intval($id))
验证模型中的 id 的最佳方法是什么?我希望它接受大于 0 的整数和有效正整数的字符串。
我更喜欢时间成本很低的东西。这就是我不使用正则表达式进行验证的原因。这些调用将在应用程序的任何地方使用,我无法承受开销。