По какой причине 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.

Author: UzumakiArtanis, 2014-10-28

1 answers

, Поскольку разработчики других мест в мире, таких как Саудовская Аравия, например, вероятно, хотели бы иметь возможность создать функцию следующим образом:

نفعلشيئا()

Нет никаких причин, чтобы компилятор запретить использование "специальные символы" в исходный код.

Вы можете игры не использую его в проекте, по какой-то конкретной причине, и можно по-прежнему настроить анализатор исходного кода, чтобы разорвать build случае возникновения символов, запрещенных по конвенции. Но компилятор не знает, некоторые аспекты культуры своего времени или не беспокоит.

Update: извините, что использование слова "компилятор" :-) Некоторые языки являются лишь интерпретированы. Но ответ тот же.

Кстати, например, 웃, кажется, carcter действительны в Корее ("смайлик", согласно Google Translate).

Update 2 - краткое размышление:", что не использовали специальных символов в наших системах?

, что делает его специальные символы?

В Этой документации функции в Windows, я нашел определение интересное:

Специальные символы-это Символы, которые не найдены в клавиатура.

Итак, в моей клавиатуре я вижу все, что мне нужно, чтобы написать "executarAção". Тогда-то настройки специальные символы неверно (наши здесь, в этом вопрос, или архивариус, Microsoft).

Мне понравилось больше всего этого другой определение:

- это символы, такие как точки, символы (@ * ! % ; : . ) или пробелов в белый, которые не поддерживаются системой регистрации для заполнения в полях имя пользователя и пароль.

Тогда да, хорошее определение. Она устанавливает домен, для его определения специальных символов: некоторые системные поля регистрации.

Таким образом, я делаю вывод, что определение "специальных символов", зависит от контекста. Что такое специальные символы здесь может не оказаться там.

Наше определение специальные символы:

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

  • Каждый программист сохраняет файл в другой кодировке, то, что седиль вы сохранили на вашем компьютере появляется как символ чужой в моей.

  • Каждое приложение, которое использует наша база данных была составлена, или будет восприниматься, используя другую кодировку, то SELECT, который я написал в приложении, используя седиль не найдете таблицу, созданную с седилью из другого приложения.

  • Каждый программист имеет "понятие" отличается от того, какие слова подчеркнуты, то функции, которые я nomeio с акцентом не будет легко найти другого программиста, который считает, что слово не легкий акцент.

  • И так будет...

Заключение: ora, программист, с благими намерениями PHP увидите, здорово, что на русском языке могут использовать его, чтобы выбрать, как часто, в исходный код. Если интерпретатор не имеет проблем, связанных с эти символы, за что ограничить их использование? И, конечно, как я уже говорил, есть много языков на достигнутом, используя самые различные "специальные символы".

Проблемы, которые я привел, могут быть пропущены, это программист PHP, потому что это "легко" их устранить: достаточно все использовать кодировку UTF-8 в своих издателей и других инструментов, и просто, что все хорошо знают ваш язык. Мы не гарантируем об этом (я, по крайней мере, не уверен), и мы следуем нашей традиции игры не использования специальных символов.

Ясно, что до появления и массовости стандарты кодирования более современные (UTF-8), проблемы, как и использование "специальных символов", были серьезными, потому что стандарты кодировок, были ограничены. Даже в то время компиляторы и интерпретаторы не могут многое сделать, в том смысле, чтобы ограничить использование символов, ибо, как уже сказано, определение, какие символы являются специальными будет меняться.

 9
Author: Caffé, 2014-10-29 12:59:29