В PHP имена переменных и констант чувствительны к регистру, а имена функций — нет.
Насколько я знаю, PHP — единственный язык, на котором это происходит. Все остальные языки, которые я использовал, либо полностью чувствительны к регистру, либо абсолютно нечувствительны к регистру.
Почему PHP частично дело чувствительное?
Обратите внимание, что я не спрашиваю который имена чувствительны к регистру, но Зачем.
Обновить
Я думал, что мог бы добавить, в пользу тех, кто думает, что я спрашиваю который, следующий список:
С учетом регистра
Без учета регистра
Замечания:
class
Ключевое слово нечувствительно к региструПочему PHP частично чувствителен к регистру?
Я могу только предположить, что это связано с очень ранними версиями, вероятно, PHP / FI 2.0. руководство прямо заявляет:
Помните, что имена функций PHP / FI не чувствительны к регистру.
Большая часть пользовательского ввода, такого как параметры GET и POST, всегда была зарегистрирована как глобальные переменные. Отношение к ним как к нечувствительному к регистру, вероятно, вызвало бы проблемы, и поэтому предположительно поэтому все переменные рассматривались как чувствительные к регистру.
Из того, что я могу сказать, это были единственные идентификаторы в PHP / FI 2.0. Все остальные были введены позже, по-видимому, имитируя имена функций без учета регистра.
Особые константы были введены только в PHP 4 ( Руководство по PHP 3 упоминает «константы», но в настоящее время их называют «литералами»). По какой-то таинственной причине (возможно, консенсус не был найден) было решено разрешить использование постоянных идентификаторов. define()
d либо чувствителен к регистру, либо нечувствителен к диссонансу разработчиков. Интересно, а пока define()
по умолчанию учитывает регистрозависимые константы, соответствующие аналоги C (REGISTER_*_CONSTANT
) по умолчанию без учета регистра.
С учетом регистра (определяется как пользователем, так и PHP)
Без учета регистра (определяется как пользователем, так и PHP)
В php.net
основы
Переменные в PHP представлены знаком доллара, за которым следует имя переменной. Имя переменной чувствительно к регистру.
Имена переменных следуют тем же правилам, что и другие метки в PHP. Допустимое имя переменной начинается с буквы или подчеркивания, за которым следует любое количество букв, цифр или подчеркивания. Как регулярное выражение, это будет выражаться так: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Несколько полезных ссылок
С учетом регистра
переменные, константы, ключи массива, свойства класса, константы класса
Без учета регистра
функции, конструкторы классов, методы классов, ключевые слова и конструкции
(если, иначе, null, foreach, echo и т. д.)
Имена классов также нечувствительны к регистру, как я только что заметил в каком-то работающем устаревшем коде.
Это поведение также сообщается здесь: Заглавные буквы в имени класса PHP