2016-06-28 5 views
0

Ich versuche derzeit, eine Instanz einer Klasse durch ihren Namen zu erhalten. Ich habe einen Controller und in diesem Controller möchte ich eine Instanz einer Klasse durch seine Klassenname erhalten. Ich weiß, dass die Klasse im Namensraum MyModule \ Entity sein wird.Dynamisch laden Klasse nach Name in Zend 2

Was ist der beste Weg, um eine Instanz einer Klasse mit Zend 2 dynamisch zu erstellen?

namespace MyModule\Controller; 

class MyController extends AbstractActionController { 

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

Antwort

1

In ZF1 würde ich tun

$class = new MyModule_Entity_Classname(); 

Ich weiß nicht, ob dies in ZF2 geändert.

+0

Dies funktioniert immer noch in ZF2. Aber ich bin mir nicht sicher, ob dies der beste Weg ist, dies zu erreichen!? – inf3ction

+0

Sie können auch ein "verwenden MyModule \ Entity \ Classname als Klassenname;" am Anfang deines Controllers und dann einfach $ class = new Classname(); – Kvn91

+0

Aber das wäre ein bisschen zu viel, aufgrund der Tatsache, ob ich 100 oder mehr verschiedene Klassen haben werde, die ich laden muss, abhängig vom Klassennamen. Deshalb möchte ich die Klasse dynamisch laden. – inf3ction

0

Wenn Sie Komponisten verwenden und es so konfiguriert ist richtig können Sie:

$class = new $className; 

aber $className sollte vollständigen Namen der Klasse sein, z.B. \MyModule\MyClass