У меня всегда было впечатление, что все функции php должны начинаться с [a-zA-Z]
.
Например, это будет работать:
function a1() {
return "Something, because I'm written properly.";
}
... в то время как это не будет:
function 1a() {
return "Nothing, because you'll encounter an error before this function ever runs.";
}
Однако символ, отображаемый в результате rawurldecode('%E2%80%A9')
, когда отображающий его документ имеет объявленный тип содержимого UTF8, также может использоваться для определения функции.
В текстовом редакторе, который не отображает скрытые символы, в конечном итоге выглядит так, что функция была определена как function () {
, которую затем можно выполнить, вызвав (что кажется не более чем) ();
Я не могу вставить исходный код, и он по-прежнему отображается правильно, поэтому вот несколько скриншотов. Первый — это снимок экрана того, что было отображено в моем браузере, а второй — это снимок экрана фактического исходного кода, отображаемого в моем текстовом редакторе (TextWrangler) с включенным параметром Отображать скрытые символы:
Браузер:
Исходный код:
Мой вопрос: это сделано намеренно? Должен ли я иметь возможность определять функции/переменные с непечатаемыми символами и при этом обеспечивать их безупречную работу? И если да, то задокументировано ли это где-нибудь?
Я не мог найти никакой информации об этом, но я (очевидно) не знаю всего.
Спасибо!