PHP не выдает никаких уведомлений для неопределенной переменной, если переменная передается в empty() или isset()

<?php

function myFunction($yesNname) { } 

empty($noName);
print_r($noName);
isset($noName);

myFunction($noName);

выход:

PHP Notice:  Undefined variable: noName ... on line 6 // print_r
PHP Notice:  Undefined variable: noName ... on line 9 // myFunction

Неопределенная переменная используется в empty() и isset (). Но PHP не выпустил уведомление об этом. Почему PHP показывает дискриминацию какой-либо функции? Как я могу написать такой тип функции?

3 ответа

Решение

Ни isset() ни empty() являются функциями. Как объясняется в руководстве:

это языковая конструкция, а не функция

Чтобы получить такое поведение, вам нужно настроить исходный код PHP, написанный на C.

Вполне возможно, что вы также можете получить такое поведение с расширением PHP, но вам также нужно написать его на C и установить его на свой сервер.

Обновить:

Вы имели в виду как:

if(!empty($noName)) {
 // print_r
 // function($noName);
}

Там нет никакого способа сделать это на стороне функции. Если вы просто не хотите показывать ошибки, вы можете либо проверить переменную перед вызовом функции, либо использовать оператор контроля ошибок "@".

Другие вопросы по тегам