Hromadné načítání závislostí
- Polki
- Člen | 553
Zdravím válečníci.
Má Nette, nebo plánuje, nějakým hromadným způsobem načítat závislosti z DI?
představa je asi taková:
config.neon:
services:
invoice:
class: App\Model\InvoiceManager
groups: ['storeManagement']
order:
class: App\Model\OrderManager
groups: ['storeManagement']
orderItem:
class: App\Model\OrderItemManager
groups: ['storeManagement']
presenter:
final class StorePresenter extends BasePresenter {
/** @var storeManagement */
private $storeManagers;
public function __contruct(storeManagement $storeManagers) {
parent::__contruct();
$this->storeManagers = $storeManagers;
}
public function renderDefault() {
$this->template->order = $this->storeManagers->OrderManager->getLastOrder($this->user->id);
$this->template->orderItems = $this->storeManagers->OrderItemManager->getItems($this->template->order->id);
...
}
}
Tedy, že by Nette umělo automaticky obalit služby, které mají nějaký stejný tag do třídy/ArrayHashe/whatever, ze které potom budu jednotlivé služby, které potřebuji získávat pomocí getteru s názvem dané třídy?
Tedy abych nemusel tu mezitřídu psát ručně?
Díky
- Václav Pávek
- Backer | 100
Ahoj, tagy jsou to co hledáš. Viz. https://forum.nette.org/…di-3-0-beta1 a https://f3l1x.io/…y-injection/
- Marek Bartoš
- Nette Blogger | 1274
- Your\StoreManagement(typed(Your\ServiceBaseClassOrInterface))
- Your\StoreManagement(tagged(yourTagName))
Takhle se autowiruje více služeb do pole podle interface nebo tagu. Generovat pro to třídu nemá smysl, stejně by šlo jen o generickou kolekci bez přidané hodnoty oproti poli