2016-06-28 4 views
0

В настоящее время я пытаюсь получить экземпляр класса по его названию. У меня есть контроллер и в этом контроллере я хотел бы получить экземпляр класса по его классу. Я знаю, что класс будет находиться в пространстве имен MyModule \ Entity.Динамически загружать класс по имени в Zend 2

Каков наилучший способ динамического создания экземпляра класса с Zend 2?

namespace MyModule\Controller; 

class MyController extends AbstractActionController { 

public function indexAction() { 
    $className = "myclass"; // File myclass.php 
    $class = ??? // create instance by $className 
    $class->process(); 
} 

ответ

1

В ZF1 я бы

$class = new MyModule_Entity_Classname(); 

Я не знаю, если это изменилось в ZF2.

+0

Это все еще работает в ZF2. Но я не уверен, что это лучший способ достичь этого! – inf3ction

+0

Вы также можете использовать «Использовать MyModule \ Entity \ Classname как имя класса»; в начале вашего контроллера, а затем просто выполните $ class = new Classname(); – Kvn91

+0

Но это было бы слишком много, из-за того, что у меня будет 100 или более разных классов, которые мне нужно загрузить, в зависимости от имени класса. Вот почему я хочу загрузить динамический класс. – inf3ction

0

Если вы используете композитор и он правильно настроен, вы можете использовать:

$class = new $className; 

но $className должно быть полное имя класса, например, \MyModule\MyClass