Aliasy v Dependency Injection Containeru
- Filip Procházka
- Moderator | 4668
Líbilo by se mi něco jako
services:
foo: @bar
a
$container->addDefinition('foo')->setFactory('@bar');
výsledkem by bylo zkompilované
protected function createServiceFoo()
{
return $this->getService('bar');
}
Mám zkusit poslat pull Davide, nebo tuhle funkcionalitu vůbec nechceš?
- David Grudl
- Nette Core | 8227
Zatím se mi vždycky ukázalo, že jsem alias potřeboval jen záplatu na špatný návrh, tedy něco, co šlo řešit jinak a hlavně lépe. Takže zatím podporované nejsou. Klidně je přidám, ale zajímal by měl use case, kde jsou smysluplné.
- Filip Procházka
- Moderator | 4668
Asi máš pravdu a je to špatným návrhem.
To co mě tady teď pálí snad půjde nějak přepsat bez aliasů, ale bude to
bolet :)
- David Grudl
- Nette Core | 8227
Přepisování je pakárna. Ale když tam aliasy nebudou, nebude je nikdo mít tendenci používat.
(BTW, čistě mezi námi, alias velmi jednoduše zapsat jde, napovím …
- Filip Procházka
- Moderator | 4668
Díky, to mě taky napadlo, ale říkal jsem si, že to nebude nejčistější :)
- David Grudl
- Nette Core | 8227
Patrik Votoček napsal(a):
Spíš:
No jasně, píšu po ránu kraviny ;-)
A je to zcela čistý způsob.
- Filip Procházka
- Moderator | 4668
Napadlo mě jenom to „create“ a to se mi moc nelíbilo, ale „get“ se mi líbí :)
Chtěl jsem se obejít bez těch aliasů, ale v tomhle případě se to prostě nehodí.
Chci mít možnost konfiguratovat více připojení pro doctrine a více
EntityManagerů. Prefixuju si je podle jména
doctrine_orm_<name>EntityManager
a stejně tak připojení
doctrine_dbal_<name>Connection
.
Výchozí (hlavní) připojení a stejně tak výchozí EntityManager má pak
alias doctrine_orm_entityManager
a
doctrine_orm_connection
, kvůli jiným službám.
Docela mi vyhovují ty „get“ továrničky, připomíná mi to, že by tak být spíš nemělo :)