php: класс не найден (динамически созданный экземпляр) [дубликат]

В PHP вам нужно либо использовать функции multibyte , либо включить mbstring.func_overload . Таким образом, такие вещи, как strlen, будут работать, если у вас есть символы, которые принимают более одного байта.

Вам также потребуется определить набор символов ваших ответов. Вы можете использовать AddDefaultCharset, как указано выше, или написать PHP-код, который возвращает заголовок. (Или вы можете добавить тег META в свои HTML-документы.)

3
задан Sondre 29 May 2013 в 08:35
поделиться

1 ответ

Поскольку строки могут передаваться из одного пространства имен в другое. Это делает неправильное разрешение имен в лучшем случае и легко вводит странные проблемы.

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';
4
ответ дан deceze 25 August 2018 в 15:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: