Это не «случайность», поскольку UTF-8 кодирует все символы после U + 007F в виде нескольких байтов в диапазоне 0x80-0xFF.
озволяет идентификаторы Unicode для переменных, функций, классов и констант в любом случае. Это было определенно предназначено для локализованных приложений. Wether это хорошая идея, чтобы кодировать API ничего, кроме английского спорно, но это бесспорно, что некоторые параметры развития могут требовать его.
$Schüssel = new Müsli(T_FRÜCHTE);
Но PHP позволяет больше, чем просто\p{L}
для идентификаторов. Вы можете использовать практически любой символ Unicode, кроме символов из диапазона ASCII (например,:
особенный или\
поскольку это уже используется в качестве внутреннего хака для поддержки пространств имен.)
Во всяком случае, вымог сделайте это, и я бы даже подумал, что работоспособное использование для веселых проектов:
throw new ಠ_ಠ("told you about the disk space before");
Но кроме локализации, развлечений и декоративных эффектов, какие варианты использования Unicode-идентификаторов целесообразны?
Например, я размышляю об этом для встраивания параметров в имена магических методов. В моем случае мне нужно только ввести числовые параметры, так что сойдет только подчеркивание:
$what->substr_0_50->ascii("text");
// (Let's skip the evilness discussion this time. Not quite sure
// yet if I really want it, but the conciseness might make sense.)
Но если бы я хотел вставить другие текстовые параметры, мне потребовался бы другой символ Юникода. Теперь это сложнее напечатать, но есть ли такой, который поможет читабельности и передать смысл ...?
->substr✉0✉50-> // doesn't look good
Итак, вопрос в этом случае: какой символ имеет смысл в качестве разделителя для смешанных параметров в имени виртуальной функции. - Более широкая мета-тема: о каких применениях Unicode-идентификаторов вы знаете, или вы считаете, что все в порядке?