При написании функций на PHP, как широко проверять и проверять данные в параметрах?Функция PHP, проверка типов данных параметров и допустимых значений?
Например, если я ожидаю, что параметр будет логическим, должен ли я использовать его как таковой?
Или проверьте, что тип параметра является логическим и если возврат невозможен FALSE?
Мне не очень нравится идея возврата FALSE из функции только потому, что параметр недействителен, если функция функции (urrg) не проверяет некоторые данные. Потому что он может маскировать фактический результат функции, если он предназначен для возврата TRUE/FALSE в любом случае.
Если функция генерирует ошибку PHP из-за недействительных данных, предоставляемых разработчику, то это более полезно для разработчика, чем просто возврат FALSE или возврат пустой строки. Таким образом, они знают, что их входные данные (и, следовательно, возможное использование функции) являются недопустимыми/неверными, а не те тесты внутри функции, которые возвращают FALSE, а не TRUE.
Я всегда мог проверить данные, поступающие в функцию, и trigger_error()
, если данные недействительны. Но в какой степени это необходимо?
PHP по своей природе свободно напечатан. Вы должны бороться с системой, чтобы обеспечить жесткую типизацию. Тем не менее, это зависит также от того, откуда поступают данные. Если вы создаете какой-то API ajax, вы, вероятно, захотите выбросить осмысленное исключение как можно раньше, вместо того, чтобы ждать чего-то, что должно сломаться глубже в работе и вернуть эзотерическую ошибку. –
Если вы активно работаете против слабого набора текста, скорее всего, вы используете неправильный язык для начала. Как правило, можно использовать 'assert()' decorations, если только поток приложений и поведение нестабильны, так как после развертывания вы можете получить недопустимые типы. Используйте execeptions, если вы не можете его упорядочить во время разработки. – mario
О да, абсолютно я знаю о свободно типизированной природе PHP. На самом деле это то, что делает его таким простым языком для использования. Но мне интересно, должен ли я тестировать значения и типы параметров, когда они входят в функцию.На данный момент я склонен полагаться только на то, что разработчик (я) разумен и понимает, есть ли ошибка с этой функцией, чтобы убедиться, что они правильно ее используют. Только когда-либо я использую эти функции в данный момент, но что, если кто-то когда-нибудь захочет их использовать? – batfastad