DI container v konstruktore presenteru
- vvoody
- Člen | 910
Zapisom konstruktoru presenteru ako ho predviedol David na PoSobote https://www.youtube.com/watch?… 27:42 som odstrihol pristup ku contextu pre Nette\Application\UI\Presenter, ten som tam teda doplnil ale stale sa mi tam nepaci ten context, ide to cistejsie, alebo je to takto spravne?
class MyPresenter extends BasePresenter {
private $database;
public function __construct(Nette\DI\IContainer $context, Nette\Database\Connection $connection) {
parent::__construct($context);
$this->database= $conection;
}
}
Mam povazovat ten context za klavir s cigarou? Ak ano, tak je spravne davat do „rúk“ Nette\Application\UI\Presenter-u cely DI container?
Editoval vvoody (27. 4. 2012 13:07)
- Elijen
- Člen | 171
Od tohoto commitu by nemelo byt nutne predavat context contructoru. Misto toho ho PresenterFactory doplni pomoci metody setContext automaticky.
- pepakriz
- Člen | 246
Kdo chce volný konstruktor i ve verzi 2.0.x, dá se použít takový nepěkný (ale funkční) hack v BasePresenteru.
public function __construct()
{
$container = new \Nette\DI\Container;
$container->parameters["productionMode"] = true;
parent::__construct($container);
}
final public function setContext(\Nette\DI\Container $context)
{
parent::__construct($context);
}
- David Grudl
- Nette Core | 8228
Řešení použité v DEV verzi byla spíš náplast na ústa, s největší pravděpodobností se vrátí původní způsob z 2.0.x
vvoody napsal(a):
Mam povazovat ten context za klavir s cigarou?
Ano, je to tak. Ideální řešení to není, ale krom ideálů musí framework ctít i zpětnou kompatibilitu.