Идентификаторы Unicode (имена функций) для целей нелокализации рекомендуются?

PHP позволяет в любом случае использовать идентификаторы Unicode для переменных, функций, классов и констант. Это было, конечно, предназначено для локализованных приложений. Wether это хорошая идея, чтобы кодировать API ничего, кроме английского спорно, но это бесспорно, что некоторые параметры развития могут требовать его.

$Schüssel = new Müsli(T_FRÜCHTE); 

Но PHP допускает больше, чем просто \p{L} для идентификаторов. Вы можете использовать практически любой символ Юникода, кроме тех, что указаны в диапазоне 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, или вы считаете, что это хорошо?

Какой символ имеет смысл как разделитель для смешанных параметров в имени виртуальной функции.

?

Но не рекомендуется использовать локализацию и аттракционы и декоративные эффекты, которые используют идентификаторы Unicode?

Самым большим препятствием после поддержки шрифтов будет создание символа, который можно ввести. За пределами макроса или копирования / вставки символы Юникода не очень эффектно вводятся. Принуждение этого к другим людям, скорее всего, будет нарушать «предполагать людей, которые работают с вашим кодом после того, как вы являетесь смертоносными психопатами, которые знают, где вы живете» .

Мы используем символы Юникода только в нескольких комментариях в нашей кодовой базе, например

 // Even though this is the end of the file and we should get an implicit exit, // if we don't actually expressly exit here, PHP segfaults. // ♫ Oh, PHP, I love you. ♫ 

Я думаю, что попадает в категорию «развлечение и декоративность». Или «снимать себя в голову после убоя группы php-internals». Выбери один.

Во всяком случае, это не очень хорошая идея, потому что это сильно изменит ваш код.

Чтобы это было ясно: PHP не поддерживает Unicode. И он не поддерживает ярлыки Unicode. Точнее, PHP определяет LABEL как [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* . Как вы можете видеть здесь, он позволяет использовать только небольшой диапазон символов от типичного буквенно-цифрового + подчеркивания. Тот факт, что ваши метки Unicode все еще принимаются, является лишь артефактом из факта, что PHP не поддерживает Unicode. В UTF-8 ваши специальные символы имеют длину в несколько байтов, и PHP обрабатывает каждый из этих байтов как отдельный символ и случайно – с \x7f-\xff персонажами – каждый из них соответствует указанному выше диапазону \x7f-\xff .

Дальнейшее чтение по этой теме: Экзотические имена для методов, констант, переменных и полей – ошибка или функция?