@romicohen
Системный Архитектор

Не получается динамически создать объект через $name = 'ClassName' и потом new $name() — что делать?

Вот так работает:
new ClassName();
а так:
$name = 'ClassName';
new $name();

не работает:
Class 'ClassName' not found {"exception":"[object] (Error(code: 0)

А ведь должно работать-то...

Контекст такой:

- Приложение Laravel, этот код вызывается внутри пакета подключенного через Composer
"repositories": {
        "dev-package": {
            "type": "path",
            "url": "./packages/my-vendor/my-package",
            "options": {
                "symlink": true
            }
        }
    },

Возможно, это имеет значение?

Если кто-то сталкивался с подобным - подскажите в чем может быть причина?

P.S. PHP 7.4 - буквально на днях обновлял.
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
@romicohen Автор вопроса
Системный Архитектор
Решение таки нашел:

$name = 'My\\Name\\Space\\'.'ClassName';
new $name();


так работает.

Но все равно, не очень понятно, почему

new ClassName();

без полного имени работает, а это - не работает.

это что-то связанное с очередностью интерпретации да? кто-нибудь если понимает в подобном - расскажите в двух словах пожалуйста :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SQdev
@SQdev
PHP ♥️
$name = '\ClassName';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы