私はこれがすでに答えられたことを知っています、しかしここに私の0.02ドルがあります。
入力配列の設定を解除したり、クリアしたりしません。しかし、私がやったことは、それらをオブジェクトに置き換えることです。したがって、生の配列を使用する代わりに、とを実装するオブジェクトに置き換えArrayAccess
ますIterator
。そうすれば、ネイティブ配列を使用するコードの大部分は、オブジェクトで引き続き非常にうまく機能します。
理論的根拠は、少なくともコードパスがテストによって正しく動作していることを確認できるということです。これらのオブジェクトをモックオブジェクトに置き換えて、テスト中に例外をスローし、それらの配列への不適切なアクセスを検出できるようにすることができます(「悪い習慣」であると判断した場合)。そのため、不要な制限を課すことなく本番環境で実行できますが、テスト中にベストプラクティスを検証するためにオンにすることもできます。
エスケープについては@JWに同意しますが、入力をフィルタリングする必要があります。フィルターイン、エスケープアウト。データが(ユーザー入力またはDBから)プログラムに入るときはいつでも、期待値にフィルターをかけます。データが(DBまたはユーザーのいずれかに)送信されるときはいつでも、そのメディアに対して適切にデータをエスケープする必要があります。したがって、送信されたデータを簡単にフィルタリングできるリクエストオブジェクトを使用すると、非常に価値があります。
流暢なインターフェースを使用した例(必要な場合と不要な場合があります):
$id = $request->get('some_id')->filter('int', array('min' => 1));
また、プラットフォームや構成の違い(たとえば、magic_quotes_gcp
有効かどうかなど)を補正するメリットは含まれていません...
とにかく、それは私の意見です...