次のように定義された主キーを持つMySQLのデータベーステーブルがあります。
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`)
私はすでにテーブルのモデルを作成しました。ORMなしでZendFrameworkv1を使用していますが、この質問はすべてのモデル実装に当てはまるはずです。
今、私は私がつかむことを可能にする関数を作成したいと思いますid
:
public static function getById ($id) {
$id = intval($id);
if ($id < 1) {
throw new Exception('bad id');
}
// business logic and stuff
return $stuff;
}
このアプローチの理由は2つあります。まず、数値を含むフォーム入力は、多くの場合、ビューから文字列として読み取られます。次に、無効な文字列(など'asdf'
)はキャスト後にゼロになり、例外が発生します。ただし、チェックをバイパスする可能性のある無効な文字列が多数あります。
echo intval('1asdf');
出力:
1
私が試した他のアプローチは次のとおりです。
if (intval($id) === 0)
if ($id == intval($id))
モデル内のIDを検証するための最良の方法は何ですか?0より大きい整数、および有効な正の整数である文字列を受け入れるようにします。
時間コストが非常に低いものがいいと思います。これが、検証に正規表現を使用していない理由です。これらの呼び出しはアプリケーションのあらゆる場所で使用されるため、オーバーヘッドを支払う余裕はありません。