Automatické zavolání metody při injectu služby do presenteru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- nat
- Člen | 12
Potřebuji při vložení nějakého modulu rozšířit nějakou základní třídu v aplikaci. Moje představa byla nějaká taková:
<?php
abstract class Repository extends \Nette\Object implements IRepository {
public function __construct(\Nette\Database\Context $db) {
$this->intialize();
}
public function intialize() {
}
}
class BarRepository extends Repository implements IRepository {
public function initialize() {
MetaDataRepository::extensionMethod('getBar', function(MetaDataRepository $that, $metaDataId) {
// nějaký kod
});
}
}
class FooPresenter extends BasePresenter
{
/** @var \Model\Repositories\BarRepository @inject */
public $bar;
public function actionDefault($metaId, $metaUrl) {
$topic = $this->metaDatas->getBar($metaId);
}
}
?>
Což bohužel nefunguje, protože se zjevně nezavolá konstruktor
BarRepository. Jak to vyřešit aby se metoda
BarRepository::initialize()
zavolal vždy při injectu?