メソッドの入力検証をどのように処理すればよいですか?
これらのうち、どちらが正しい方法ですか?またはより良い方法があります
このメソッドはコンストラクタによって呼び出され、$ prodIDはユーザー入力またはdbから来る可能性があります。あなたの入力を検証する際メソッドのプロパティ入力の検証
private function fill_data1($prodID)
{
//Way 1
filter_var($prodID, FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1, 'max_range'=>1000000)));
if (is_null($prodID)) {
return FALSE;
} elseif ($prodID === FALSE) {
return FALSE;
}
$prod = getArtData($prodID);
$this->set_id($prod['artID']);
$this->set_name($prod['artName']);
$this->set_price($prod['precio']);
}
private function fill_data(2$prodID)
{
//Way 2
filter_var($prodID, FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1, 'max_range'=>1000000)));
if (is_null($prodID) || $prodID === FALSE)
{
die('invalid input for prodID (' . $prodID . '). It has to be an integer > 0');
}
$prod = getArtData($prodID);
$this->set_id($prod['artID']);
$this->set_name($prod['artName']);
$this->set_price($prod['precio']);
}
はい、少し厳しいですが、確かにユーザーはメッセージを表示します(ページ上で唯一のものになります) –
入力が無効な場合は問題です。実行はすぐに停止しなければならず、次のステップはdb write ... –
私はこのコメントボックスを嫌い、自動的にsubmitを入力してください...ここで例外を使用する正しい方法は? –