Я знаю, что на этот вопрос уже ответили, но вот мои $ 0,02.
Я бы не сбрасывал и не очищал входные массивы. Однако то, что я сделал, это заменил их объектом. Поэтому вместо необработанного массива я заменяю его объектом, который реализует ArrayAccess
и Iterator
. Таким образом, подавляющее большинство кода, использующего собственные массивы, будет по-прежнему работать с объектом достаточно хорошо.
Смысл в том, что по крайней мере вы можете проверить, что пути кода работают правильно с помощью тестов. Вы можете заменить эти объекты на фиктивный объект, чтобы вызвать исключение во время тестирования, чтобы вы могли обнаружить неправильный доступ к этим массивам (если вы определите, что это «плохая практика»). Таким образом, он позволяет вам работать во время производства без наложения ненужных ограничений, но также позволяет включать его для проверки передового опыта во время тестирования.
И хотя я согласен с @JW по поводу побега, вы должны фильтровать ввод. Фильтр-выход, выход-выход. Каждый раз, когда данные поступают в вашу программу (либо через пользовательский ввод, либо из БД), фильтруйте их до ожидаемых значений. Каждый раз, когда данные поступают (либо в БД, либо к пользователю), вам необходимо правильно экранировать их для этого носителя. Поэтому использование объекта запроса, позволяющего легко фильтровать отправленные данные, может быть очень полезным.
Пример использования беглого интерфейса (который вы можете или не можете хотеть):
$id = $request->get('some_id')->filter('int', array('min' => 1));
И это не включает в себя преимущества компенсации различных платформ и конфигураций (например, если magic_quotes_gcp
включен или нет, и т. Д.) ...
Во всяком случае, это только мое мнение ...