Подтвердить что ты не робот

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

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

function ag()
{
    echo '2';
}

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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



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

Для функций (quoting):

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

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


И для переменных (quoting):

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

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