Какая польза от использования filter_has_var () над isset ()

Я немного смущен тем, что использовал filter_has_var($_POST['id']) через isset($_POST['id']) .

Может кто-нибудь, пожалуйста, скажите мне, является ли это просто функцией псевдонима?

Не так много;) Согласно странице руководства для filter_has_var один пользователь находит filter_has_var немного быстрее. Также стоит отметить … filter_has_var не работает над живым массивом ( $_POST ), а на фактическом предоставленном входе … если вы когда-либо добавляете / удаляете / обновляете то, что в этом массиве, вы не увидите эти изменения с помощью filter_has_var вызов (в то время как isset будет отображать текущее состояние)

Кстати, использование filter_has_var(INPUT_POST,"id");

Обновление: возможно, стоит упомянуть, filter_has_var был представлен в PHP 5.2.0 (несколько новый), в то время как isset был вокруг для всего PHP4 + 5. Большинство серверов постоянно обновляется, но isset всегда будет работать (никто до сих пор не запускает PHP3?)

Прежде всего, это не

 filter_has_var($_POST['id']) 

Это

 filter_has_var(INPUT_POST, 'id') 

Во-вторых, он фактически не запрашивает $_POST . Он анализирует параметр запроса, который пришел с запросом, поэтому это лучший метод для использования в случае, если $_POST каким-то образом загрязнен скриптом PHP.

Я думаю, вы имеете в виду filter_has_var(INPUT_POST, 'id') над isset($_POST['id']) .

Существует небольшая разница в том, что isset возвращает false, если $_POST['id'] равно NULL ; вам придется использовать key_exists('id', $_POST) чтобы иметь подобное поведение в этом отношении.

Кроме того, единственное различие заключается в том, что filter_has_var не рассматривает модификации массива $_POST (см. Этот комментарий ).

Функция не проверяет живые массивы

 <?php $_GET['a'] = 1; echo filter_has_var(INPUT_GET, 'a') ? 'Exist' : 'Not exist'; 

будет печать Не существует