директива 'use' при использовании ReflectionClass в приложении symfony

php symfony

659 просмотра

2 ответа

2346 Репутация автора

У меня есть класс в моем приложении Symfony 3 с методом, который должен динамически создавать экземпляр класса Model, используя имя, переданное функции, то есть:

static function getInstance($modelName){

    use $modelName;

    $r = new \ReflectionClass($modelName);
    return $r->newInstanceArgs();
}

Но есть синтаксическая ошибка в useдирективе.

Я попытался добавить конкретные useоператоры для каждого класса в верхней части файла; и я также попытался использовать requireполный путь к соответствующему файлу PHP - но ни один из подходов не сработал.

Посоветуйте, пожалуйста, как правильно это сделать.

Автор: Black Источник Размещён: 19.07.2016 05:00

Ответы (2)


0 плюса

2519 Репутация автора

Решение

Как насчет этого? используйте квалифицированное имя класса

static function getInstance($modelName){
    $r = new \ReflectionClass('AppBundle\Entity\\' . $modelName);
    return $r->newInstanceArgs();
}
Автор: Denis Alimov Размещён: 19.07.2016 05:22

0 плюса

1 Репутация автора

Также, согласно PHP USE Документация:

Общие правила для импорта

Ключевое слово use должно быть объявлено в самой внешней области файла (глобальной области) или в объявлениях пространства имен. Это связано с тем, что импорт выполняется во время компиляции, а не во время выполнения, поэтому его нельзя ограничить областью действия. В следующем примере будет показано незаконное использование ключевого слова use:

Пример № 5: Неверное правило импорта

namespace Languages;

function toGreenlandic() {
    use Languages\Danish;
}
Автор: Shawn M. Hanes Размещён: 03.05.2017 12:27
Вопросы из категории :
32x32