В PHP переменные и константные имена чувствительны к регистру, а имена функций – нет.
Насколько мне известно, PHP – это единственный язык, на котором это происходит. Все остальные языки, которые я использовал, либо полностью чувствительны к регистру, либо полностью нечувствительны к регистру.
Почему PHP частично относится к senstive?
Обратите внимание, что я не спрашиваю, какие имена чувствительны к регистру, но почему .
С учетом регистра (как определено пользователем, так и PHP)
Нечувствительность к регистру (как определено пользователем, так и PHP)
В php.net
основы
Переменные в PHP представлены знаком доллара, за которым следует имя переменной. Имя переменной чувствительно к регистру.
Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания. В качестве регулярного выражения оно выражается следующим образом: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Некоторые полезные ссылки
Деликатный случай
переменные, константы, ключи массива, свойства класса, константы класса
Без учета регистра
функции, конструкторы классов, методы класса, ключевые слова и конструкции (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
) по умолчанию нечувствительны к регистру.