Autor | Zpráva | ||
---|---|---|---|
Merda Profil * |
#1 · Zasláno: 30. 5. 2013, 17:40:55
Zdravím.
Už dlouho si lámu hlavu na to jak udělát setter, aby "injectnul" rozhraní.. class StD { private $model = null; public function setModel(IRate $model){ $this->model = $model; } public function funkce(){ $this->model->nejakafunkce(); } } |
||
loyza Profil |
#2 · Zasláno: 30. 5. 2013, 17:46:41
Asi nerozumím otázce. Toto je třída a vy chcete aby někdo z vnějšku vložil přes setter instanci třídy, která implementuje IRate? Nebo to chápu špatně? Používáte nějaký framework? nebo dependency injection container?
|
||
Merda Profil * |
#3 · Zasláno: 30. 5. 2013, 18:14:32
Chápete to dobře..
Používám nette a ano obsahuje DI .. |
||
aDAm Profil |
#4 · Zasláno: 31. 5. 2013, 09:32:53
a v čem je problém? toto by přece mělo normálně fungovat?
|
||
Tori Profil |
#5 · Zasláno: 31. 5. 2013, 10:34:46
Merda:
Jestli chcete, aby se instance injectovala automaticky při vytvoření instance, tak asi bude potřeba tu instanci zaregistrovat jako službu (v konfiguráku) + použít příslušnou phpdoc anotaci. |
||
aDAm Profil |
#6 · Zasláno: 31. 5. 2013, 12:45:23
Reaguji na Tori:
pokud vím, tak pomocí anotace se to dá použít pouze v presenterech a to ještě za pomocí autoloaderu, jinak se musí použít inject metody a nebo pokud se jedná o nějakou službu (class StD) tak ji to před pomocí setupu v konfiguraku. |
||
loyza Profil |
#7 · Zasláno: 31. 5. 2013, 18:27:59
Já osobně settery vůbec nepoužívám, takže s tím nemám žádnou zkušenost, ale díval jsem se do manuálu a mohlo by to jít.
V sekci low level úpravy: http://doc.nette.org/cs/configuring |
||
Časová prodleva: 11 let
|
0