PHP, кажется, определяет ноль как себя. Как это работает? - PullRequest
4 голосов
/ 21 апреля 2020

Мой коллега обнаружил, нажав Ctrl + 1001 * в PHPStorm, что PHP определяет null как

define ('null', null, true);

в core_d.php.

  1. Почему PHP нужно вообще определять ноль?
  2. Как это вообще работает? Как он может определить null как сам по себе?

Моя лучшая теория до сих пор заключается в том, что, возможно, null уже определен, но использование define позволяет добавить псевдоним без учета регистра, так сказать , Я не знаю достаточно о PHP, чтобы судить о вероятности этого.

1 Ответ

9 голосов
/ 21 апреля 2020

core_d.php принадлежит PHPStorm, а не PHP. См. Файл на github. PHP почти полностью записан в C. Этот файл, вероятно, существует, чтобы помочь с пониманием кода и анализом stati c. Из файла README репозитория окурков :

STUBS - это нормальные, синтаксически правильные PHP файлы, которые содержат сигнатуры функций и классов, определения констант и т. Д. c. для всех встроенных PHP вещей и большинства стандартных расширений. Заглушки должны включать полные PHPDO C, особенно правильные аннотации @return.

В IDE они нужны для завершения, проверки кода, вывода типов, всплывающих окон c и т. Д. c. Качество большинства этих услуг зависит от качества заглушек (в основном их PHPDO C @annotations).

Однако, как отмечает Bartosz Zasada php действительно определяет константу с именем null. Он определен в строке 138 ext/zend/zend_constants.c в исходном коде php.

...