tohle netuším jak nazvat, snad jenom, že hloupý qteck potřebuje poradit
- qteck
- Člen | 164
AHoj,
řešil jsem jak dostat data z modelu do presenteru. Nejlepší volbou je injektování skrze anotace, přečetl jsem.
tak jsem se pokusil nešlo a nešlo a nešlo to a pak metodou pokus omyl jsem došel k tomuto scriptu:
class HomepagePresenter extends BasePresenter
{
/** @var \Repository\Article @inject */
public $article;
function __construct(\Repository\Article $article)
{
parent::__construct();
$this->article = $article;
}
public function renderDefault()
{
$this->template->article = $this->article->getArticle();
}
}
kouzelné je, že vlastně funguje bez injektování aji bez rodičovského konstruktoru no a já se ptám, jak je to možné?
ořezanej kus:
class HomepagePresenter extends BasePresenter
{
public $article;
function __construct(\Repository\Article $article)
{
$this->article = $article;
}
public function renderDefault()
{
$this->template->article = $this->article->getArticle();
}
}
nehleďmě teďka na banálnost onoho scriptu jako takového, ale co se týče nette zápisu, je to takto správně? Otázka se týká zejména: „\Repository\Article $article“.
a taky trochu z nette, ten rodičovskej kontruktor jsem tam šoupl nakonec jenom protože mi tam netbeans furt upozorňoval, že by tam měl být, je to opravdu tak a proč?
sorry za lame.
- hAssassin
- Člen | 293
@qteck > asi takhle, oba priklady jsou spatne. proc oba funguji, je
celkem jasny, prvni funguje protoze tam mas @inject anotaci, cili potom
je predani \Repository\Article
v konstruktoru zbytecny. Druhy
priklad postrada anotaci @inject ale funguje predani zavislosti pres
konstruktor (priznam se ze nevim co je uprednostnovany – konstruktor vs.
inject).
Kazdopadne proc je to spatne? Protoze Predavani zavislosti do presenteru pres konstruktor je spatne. Mely by se pouzivat anotace @inject. Cili kod se pak dost zjednodussi:
class HomepagePresenter extends BasePresenter
{
/** @var \Repository\Article @inject */
public $article;
public function renderDefault()
{
$this->template->article = $this->article->getArticle();
}
}