Autor Zpráva
Lavka
Profil
Dobrý den,
programuji si dependenci injection container a potřeboval bych zjistit typy(názvy tříd) argumentů konstruktoru pro jejich injectáž. Mám následující třídu:
class TestController extends Template {
    
    private $testModel;
    
  public function __construct(TestModel $testModel) {
    $this->testModel = $testModel;
  }
}
Dosud jsem používal tento postup:
$rc = new ReflectionClass('TestController');

foreach ($rc->getConstructor()->getParameters() AS $parametr) {
  $className = $parametr->getClass()->name;

  $ref = new ReflectionClass($className);
  $parametrs[] = $ref->newInstanceArgs($this->dependenciesParametrs[$className]);
}
Který jak jsem zjistil funguje jen v případě, že je třída která je požadována již includována do php scriptu. Já potřebuji jen získat string (v ukázkovém případě: "TestModel") abych daný soubor mohl includovat a následně vytvořit instanci.
Předem děkuji za odpověď.
Tori
Profil
Použijte autoloading souborů s třídami, pak vám bude fungovat i toto. Používají se různé způsoby dohledání souboru podle názvu třídy: nejjednodušší je odvozování z názvu (class Dir1_Dir2_Filename nebo class Dir1\Dir2\Filename), na opačném konci je zcela automatizované dohledání a spárování tříd s názvy souborů (např. RobotLoader v Nette).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: