PHP filter_has_var vs пустой? - PullRequest
       0

PHP filter_has_var vs пустой?

2 голосов
/ 13 января 2012

я знаю, что empty - немного быстрее, чем isset, но filter_has_var - немного быстрее, чем isset (в php.net написано), так что же быстрее empty или filter_has_var?

Ответы [ 3 ]

5 голосов
/ 13 января 2012

filter_has_var() может быть полезно, если по какой-то причине суперглобалы были очищены, поскольку он проверяет исходные входные данные, а не $ _GET, $ _POST, $ _ETC.

Например:

$_GET["injected"] = 123;

var_dump( filter_has_var(INPUT_GET, "injected") );   // false

// or the other way round

Хотя вы можете перезаписать переменную, расширение filter получает доступ к отдельной копии. И INPUT_GET не будет псевдонимом $_GET суперглобального.

Кроме того, другая причина - использовать его для объединения. Если вы широко используете filter_var, то набор правил будет более предпочтительным, чем filter_has_var (), а не isset ().

Но не используйте одно или другое из-за каких-то глупых причин производительности.

2 голосов
/ 13 января 2012

isset проверяет, существует ли переменная

пусто проверяет, имеет ли переменная значение

filter_has_var проверяет тип данных переменной

Каждый из них имеет свои собственные конкретные применения иследует использовать соответственно.

1 голос
/ 13 января 2012

filter_has_var и empty - две совершенно разные функции, которые делают совершенно разные вещи. Вы не хотели бы поменять местами использование этих двух функций.

empty на самом деле является языковой конструкцией, которая проверяет, считается ли переменная пустой для PHP: например, null, array() или '' считаются пустыми.

filter_has_var просто проверяет один из суперглобалей PHP: $_GET, $_POST, $_SERVER, $_ENV или $_COOKIE, чтобы убедиться, что переменная была передана с запросом. Эта функция по-прежнему будет возвращать true, если переменная пуста.

...