Autor Zpráva
Merda
Profil *
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
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 *
Chápete to dobře..
Používám nette a ano obsahuje DI ..
aDAm
Profil
a v čem je problém? toto by přece mělo normálně fungovat?
Tori
Profil
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
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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: