PHP и чувствительность к регистру

В PHP переменные и константные имена чувствительны к регистру, а имена функций – нет.

Насколько мне известно, PHP – это единственный язык, на котором это происходит. Все остальные языки, которые я использовал, либо полностью чувствительны к регистру, либо полностью нечувствительны к регистру.

Почему PHP частично относится к senstive?

Обратите внимание, что я не спрашиваю, какие имена чувствительны к регистру, но почему .

Solutions Collecting From Web of "PHP и чувствительность к регистру"

С учетом регистра (как определено пользователем, так и PHP)

  • переменные
  • константы
  • клавиши массива
  • свойства класса
  • константы класса

Нечувствительность к регистру (как определено пользователем, так и PHP)

  • функции
  • конструкторы классов
  • методы класса
  • ключевые слова и конструкции (if, else, null, foreach, echo и т. д.)

В php.net

основы

Переменные в PHP представлены знаком доллара, за которым следует имя переменной. Имя переменной чувствительно к регистру.

Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания. В качестве регулярного выражения оно выражается следующим образом: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'


Некоторые полезные ссылки

  1. Руководство пользователя для пользователей
  2. Почему функции и методы в PHP нечувствительны к регистру?
  3. Являются ли функции PHP чувствительными к регистру?
  4. Являются ли ключевые слова PHP чувствительными к регистру?
  5. Являются ли имена функций PHP чувствительными к регистру или нет?
  6. Источник чувствительности к PHP

Деликатный случай

переменные, константы, ключи массива, свойства класса, константы класса

Без учета регистра

функции, конструкторы классов, методы класса, ключевые слова и конструкции (if, else, null, foreach, echo и т. д.),

Для имен файлов:

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

Когда вы разрабатываете что-то на своем WAMP или XAMPP это будет нечувствительным к регистру, когда вы перейдете на сервер Linux он будет вызывать ошибку.

Почему PHP частично относится к senstive?

Я могу только предположить, что это связано с очень ранними версиями, возможно, с PHP / FI 2.0. В руководстве явно указано:

Имейте в виду, что имена функций PHP / FI не чувствительны к регистру.

Большинство пользовательских данных, таких как параметры GET и POST, всегда были зарегистрированы как глобальные переменные. Рассмотрение этих вопросов как нечувствительных к регистру, вероятно, вызвало бы проблемы, и, предположительно, поэтому все переменные рассматривались как чувствительные к регистру.

Из того, что я могу сказать, это были единственные типы идентификаторов в PHP / FI 2.0. Все остальные были представлены позже, видимо, имитируя имена функций, не учитывающих регистр.

Константы, которые являются особыми, были введены только с PHP 4 (руководство PHP 3 упоминает «константы», но в настоящее время они называются «литералами»). По какой-то загадочной причине (возможно, консенсуса не удалось найти) было принято решение разрешить постоянным идентификаторам define() d либо чувствительным к регистру, либо нечувствительным к отклонению разработчиков. Интересно отметить, что в то время как define() умолчанию использует чувствительные к регистру константы, соответствующие C-копии ( REGISTER_*_CONSTANT ) по умолчанию нечувствительны к регистру.