Je prasárna injektovat model do modelu přes DI?
- radas
- Člen | 221
Ahoj, uvažuju nad tím, který z těchto přístupů je čistší, osobně si myslím, že ten první. Jaký je na to názor ostatních?
1. varianta
config.neon
common:
services:
profile:
class: Models\Profile
category:
class: Models\Category(@profile)
Model Category
protected $profile;
public function __construct(Profile $profile)
{
$this->profile = $profile;
}
2. varianta
config.neon
common:
services:
profile:
class: Models\Profile
category:
class: Models\Category
Model Category
/**
* @var Models\Profile
* @inject
*/
public $profile;
- rixi
- Člen | 109
Tiez pouzivam autowiring, kazdopadne som musel prepisovat jeden projekt
pretoze injectovanie v ne-presenteroch mi od Nette 2.1-RC3 uz nefungovalo a
pocitam s tym, ze takto to zostane aj v 2.1 final.
Neviem ci sa da tuto podporu aktivovat v configu, aby to fungovalo aj nadalej,
ale nenasiel som to.
Model Category
/** * @var Models\Profile * @inject */ public $profile;
- Vojtěch Dobeš
- Gold Partner | 1316
Než se vlákno zvrhne v terminologickou přestřelku :) – model značí logiku aplikace. Otázka:
na co potrebujes model v modelu?
je podle mě zavádějící, pokud jde o blíže neurčené modelové služby, je taková potřeba zcela v pořádku.
Na původní otázku bych odpověděl 1), je to standardní čistý způsob, který bude fungovat i bez speciální DI knihovny. Protože Nette DI má v sobě zabudovaný i autowiring, tak lze konfiguraci dokonce přepsat takto:
common:
services:
- Models\Profile
- Models\Category