Почему функции и методы в PHP не чувствительны к регистру? - PullRequest
101 голосов
/ 01 мая 2010

Функции и методы в PHP чувствительны к регистру, как показано в следующем примере.

function ag()
{
    echo '2';
}

Ag();
class test {
    function clMe()
    {
        echo 'hi';
    }
}

$instance = new test;
$instance->clme();

Но с переменными дело обстоит иначе. Каково обоснование?

Ответы [ 2 ]

90 голосов
/ 10 июня 2011

Позвольте мне процитировать из Интервью - Создатель PHP, Расмус Лердорф

Первая версия PHP была простым набором инструментов, которые я собрал для своего Веб-сайта и дляпара проектов.Один инструмент делал некоторые хитрые записи в базу данных mSQL, другой действовал как интерпретатор данных формы.До того, как мне это надоело, у меня было около 30 разных маленьких CGI-программ, написанных на C, и я объединил их в одну C-библиотеку.Затем я написал очень простой синтаксический анализатор, который будет выбирать теги из файлов HTML и заменять их выводом соответствующих функций из библиотеки C.

Простой синтаксический анализатор постепенно расширяется, чтобы включать условные теги, а затем циклические теги,функции и т. д. Я никогда не думал, что пишу на языке сценариев.Я просто добавил немного функциональности в синтаксический анализатор замены макросов.Я все еще писал всю свою настоящую бизнес-логику на C.

Я где-то читал, что, поскольку все введенные функции по сути напоминают теги в документе HTML, а теги HTML не чувствительны к регистру, он выбрал функциюимена в PHP не чувствительны к регистру.Позже эта функция осталась в языке.

34 голосов
/ 01 мая 2010

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

И да, имена переменных чувствительны к регистру.

Я не уверен, что есть причина для этого - за исключением того, что это происходило в течение долгого времени, и, таким образом, остается причиной по причинам обратной совместимости.



В качестве ссылки пара ссылок / цитат на различные страницы руководства:

Для функций ( цитирование ) :

Примечание: Названия функций без учета регистра, хотя обычно хорошая форма для вызова функций, как они появляются в их декларации.

И методы не намного больше, чем функции в объектах - особенно когда мы думаем о PHP 4 и обратной совместимости.


И для переменных ( цитирование ):

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

И свойства объектов не намного больше, чем переменные в объектах - то же самое замечание о PHP 4 и обратной совместимости.

...