В PHP вам нужно либо использовать функции multibyte , либо включить mbstring.func_overload . Таким образом, такие вещи, как strlen, будут работать, если у вас есть символы, которые принимают более одного байта.
Вам также потребуется определить набор символов ваших ответов. Вы можете использовать AddDefaultCharset, как указано выше, или написать PHP-код, который возвращает заголовок. (Или вы можете добавить тег META в свои HTML-документы.)
Поскольку строки могут передаваться из одного пространства имен в другое. Это делает неправильное разрешение имен в лучшем случае и легко вводит странные проблемы.
namespace Foo;
$class = 'Baz';
namespace Bar;
new $class; // what class will be instantiated?
Литерал в определенном пространстве имен не имеет этой проблемы:
namespace Foo;
new Baz; // can't be moved, it's unequivocally \Foo\Baz
Поэтому вся строка имена классов "всегда являются абсолютными и должны быть записаны как FQN:
$class = 'Foo\Baz';
(Примечание: нет ведущего \
.)
Вы можете использовать это как сокращенную, эквивалентно самореферентному self
в классах:
$class = __NAMESPACE__ . '\Baz';