Почему функции и методы в PHP не чувствительны к регистру?

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

function ag()
{
    echo '2';
}

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

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

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

вопрос задан 1.05.2010
user198729
21907 репутация

2 ответов


  • 88 рейтинг

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

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

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

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

    ответ дан Shailesh Kumar, с репутацией 3577, 10.06.2011
  • 34 рейтинг

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

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

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



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

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

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

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


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

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

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

    ответ дан Pascal MARTIN, с репутацией 329130, 1.05.2010