Почему функция isset несовместима с другими функциями, такими как empty?

Вот список тестов (все с ошибками, включая выражения):

php > isset(1); // integer

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php shell code on line 1
php >     isset('string'); // string

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php shell code on line 1
php >     isset(null); // null

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php shell code on line 1
php >     isset(['q']); // array

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php shell code on line 1
php >     isset(1==1); // expression

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php shell code on line 1
php > isset("null !== expression")
php > ;

Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in php shell code on line 1

но при тестировании с пустым:

   empty(1); // integer
   empty('string'); // string
   empty(null); // null
   empty(['q']); // array
   empty(1==1); // expression
   empty("null !== expression");

ошибок нет .. я в курсе предупреждения в мануале Warning isset() only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined() function.

Но все равно хотелось бы знать, почему .. почему это так?

Какой смысл спрашивать, было ли установлено значение для чего-то, не являющегося переменной?

Joseph Sible-Reinstate Monica 24.03.2018 15:47

isset () проверяет, была ли объявлена ​​переменная. empty () проверяет, пуста ли переменная.

Karlo Kokkak 24.03.2018 15:48

Джозеф Сибл: Да, но разве это не должно возвращать false для согласованности с другими встроенными функциями? Я нахожу это довольно странным

PauAI 24.03.2018 16:05

Это не функция, а языковая конструкция, которая просто выглядит как функция.

mario 24.03.2018 16:21

Придется запросить на сайте php.net

PauAI 26.03.2018 00:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
39
1

Ответы 1

[Решено] Это будет исправлено в грядущем патче php7.

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