По какой причине PHP позволяет создавать имена идентификаторов с помощью специальных символов?
Обычно в языках программирования и базах данных, имена идентификаторов (переменных, функций, классов, методов, таблиц, полей и др) должны начинаться обязательно с буквы или underline, числа могут прийти после и во избежание проблем символы с диакритическими знаками и специальными, которых следует избегать.
В PHP переменные должны начинаться с одного доллара $
но можно создавать идентификаторы, странные имена, как ниже:
<?php
header('Content-Type: text/html; charset=utf-8');
function executarAção($ação){
echo $ação .' <br>';
}
function 웃(){
echo 'boneco de palito da uml é você mesmo? <br>';
}
function variavelEstranha(){
${0} = 'Olá mundo estranho :D';
echo ${0};
}
executarAção('kboom');
웃();
variavelEstranha();
Вопрос:
, По какой-то причине PHP позволяет создавать переменные и функции специальных символов?
Например
Примечание: в моем тестировании, я сохранил файл как utf-8.
1 answers
, Поскольку разработчики других мест в мире, таких как Саудовская Аравия, например, вероятно, хотели бы иметь возможность создать функцию следующим образом:
نفعلشيئا()
Нет никаких причин, чтобы компилятор запретить использование "специальные символы" в исходный код.
Вы можете игры не использую его в проекте, по какой-то конкретной причине, и можно по-прежнему настроить анализатор исходного кода, чтобы разорвать build случае возникновения символов, запрещенных по конвенции. Но компилятор не знает, некоторые аспекты культуры своего времени или не беспокоит.
Update: извините, что использование слова "компилятор" :-) Некоторые языки являются лишь интерпретированы. Но ответ тот же.
Кстати, например, 웃, кажется, carcter действительны в Корее ("смайлик", согласно Google Translate).
Update 2 - краткое размышление:", что не использовали специальных символов в наших системах?
, что делает его специальные символы?
В Этой документации функции в Windows, я нашел определение интересное:
Специальные символы-это Символы, которые не найдены в клавиатура.
Итак, в моей клавиатуре я вижу все, что мне нужно, чтобы написать "executarAção". Тогда-то настройки специальные символы неверно (наши здесь, в этом вопрос, или архивариус, Microsoft).
Мне понравилось больше всего этого другой определение:
- это символы, такие как точки, символы (@ * ! % ; : . ) или пробелов в белый, которые не поддерживаются системой регистрации для заполнения в полях имя пользователя и пароль.
Тогда да, хорошее определение. Она устанавливает домен, для его определения специальных символов: некоторые системные поля регистрации.
Таким образом, я делаю вывод, что определение "специальных символов", зависит от контекста. Что такое специальные символы здесь может не оказаться там.
Наше определение специальные символы:
Мы, программисты, португальский язык, считаем до специальных символов, которые являются частью нашей жизни: седиль и подчеркивание. Не любим их в нашей системе, потому что... потому что... почему же? Конечно, не нужно формального определения, наш опыт показывает, что это только дает проблему:
Каждый программист сохраняет файл в другой кодировке, то, что седиль вы сохранили на вашем компьютере появляется как символ чужой в моей.
Каждое приложение, которое использует наша база данных была составлена, или будет восприниматься, используя другую кодировку, то SELECT, который я написал в приложении, используя седиль не найдете таблицу, созданную с седилью из другого приложения.
Каждый программист имеет "понятие" отличается от того, какие слова подчеркнуты, то функции, которые я nomeio с акцентом не будет легко найти другого программиста, который считает, что слово не легкий акцент.
И так будет...
Заключение: ora, программист, с благими намерениями PHP увидите, здорово, что на русском языке могут использовать его, чтобы выбрать, как часто, в исходный код. Если интерпретатор не имеет проблем, связанных с эти символы, за что ограничить их использование? И, конечно, как я уже говорил, есть много языков на достигнутом, используя самые различные "специальные символы".
Проблемы, которые я привел, могут быть пропущены, это программист PHP, потому что это "легко" их устранить: достаточно все использовать кодировку UTF-8
в своих издателей и других инструментов, и просто, что все хорошо знают ваш язык. Мы не гарантируем об этом (я, по крайней мере, не уверен), и мы следуем нашей традиции игры не использования специальных символов.
Ясно, что до появления и массовости стандарты кодирования более современные (UTF-8), проблемы, как и использование "специальных символов", были серьезными, потому что стандарты кодировок, были ограничены. Даже в то время компиляторы и интерпретаторы не могут многое сделать, в том смысле, чтобы ограничить использование символов, ибо, как уже сказано, определение, какие символы являются специальными будет меняться.