Jak získat z kontejneru všechny služby typu Nette\Database\Connection

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jikln
Člen | 3
+
0
-
<?php
$container->findByType('Nette\Database\Connection')
?>

nefunguje, respektive vrátí jen první službu, protože ostatní mají autowired: false

mkoubik
Člen | 728
+
0
-

Hm, to asi jednoduše nepůjde (pokud předem nevíš jaké služby to budou / kolik jich bude). Možná by k nim NetteExtension (resp. teď DatabaseExtension) mohlo přidávat nějaký tag podle kterého se dají vytáhnout.

Oli
Člen | 1215
+
0
-

Na co to potřebuješ? Tohle se mi nezdá jako nějakej best practice návrh aplikace. Podle mě to pujde řešit i mnohem elegantněji ;-)

jikln
Člen | 3
+
0
-

Řekněme, že bych si chtěl do onQuery přidat vlastní callback, stejně jako to dělá například ConnectionPanel. Problém je, že ConnectionPanel se vytváří společně s Connection v NetteExtension (iirc) a tak se mi tahle jeho funkce zdá jaksi nereprodukovatelná..

David Grudl
Nette Core | 8228
+
0
-

$container->findByType() by klidně všechny služby nezávisle na autowiringu vracet mohlo. Nechcete to někdo upravit?

jikln
Člen | 3
+
0
-

Zkusil bych to, ale nějak nevím, co pak s $container->getByType()?

Přidat do $meta další klíč (třeba ‚parents‘) a tahat findByType() z něj, a v getByType() nepoužívat findByType() ale tahat to rovnou z $meta[‚types‘]? Nebo je tam nějaký jednodušší způsob, který teď nevidím?

looky
Člen | 99
+
0
-