Почему функции и методы в PHP нечувствительны к регистру?
Функции и методы в PHP нечувствительны к регистру, как показано в следующем примере.
function ag()
{
echo '2';
}
Ag();
class test {
function clMe()
{
echo 'hi';
}
}
$instance = new test;
$instance->clme();
Но это не случай с переменными. Какое обоснование?
Ответы
Ответ 1
Позвольте мне привести цитату из Интервью - Создатель PHP, Расмус Лердорф
Первая версия PHP - это простой набор инструментов, которые я собрал для своего сайта и для нескольких проектов. Один инструмент сделал некоторые фантазии попадания в базу данных mSQL, другой действовал как интерпретатор данных формы. Я закончил с 30 различными небольшими программами CGI, написанными на C, прежде чем я устал от этого, и объединил их всех в одну библиотеку C. Затем я написал очень простой синтаксический анализатор, который выберет теги из HTML файлов и заменит их выходом соответствующих функций в библиотеке C.
Простой парсер медленно рос, чтобы включить условные теги, затем теги цикла, функции и т.д. Ни в коем случае я не думал, что пишу скриптовый язык. Я просто добавлял немного функциональности к парсеру замены макросов. Я все еще писал всю свою реальную бизнес-логику в C.
Я где-то читал, что, поскольку все введенные функции по существу ощущались как теги в HTML-документе, и поскольку HTML-теги были нечувствительны к регистру, он выбрал имена функций в PHP нечувствительными к регистру. Позже эта функция осталась на языке.
Ответ 2
Да, имена функций и методов не чувствительны к регистру.
И да, имена переменных чувствительны к регистру.
Я не уверен, что есть причина для этого - за исключением того, что это было в течение длительного времени, и, таким образом, остается в силе, для причин обратной совместимости.
Как ссылка, несколько ссылок/цитат на различные страницы руководства:
Для функций (quoting):
Примечание. Имена функций: без учета регистра, хотя обычно хорошая форма для вызова функций, поскольку они появляются в их объявлении.
И методы не намного больше, чем функции в объектах, особенно когда мы думаем о PHP 4 и обратной совместимости.
И для переменных (quoting):
Переменные в PHP представлены знак доллара, за которым следует имя переменная. Имя переменной чувствительны к регистру.
И свойства объекта не намного больше, чем переменные в объектах - то же замечание о PHP 4 и обратной совместимости.