Dotaz tutorial Komponenty
- Fires
- Člen | 97
Zdravim mel bych asi blbej dotaz ale neda mi to spat v tutorialu quickstart konktretne v komponentach
<?php
class TaskList extends UI\Control
{
/** @var \Nette\Database\Table\Selection */
private $tasks;
/** @var Tasks */
private $table;
public function __construct(Selection $tasks, Tasks $table)
{
parent::__construct(); // vždy je potřeba volat rodičovský konstruktor
$this->tasks = $tasks;
$this->table = $table;
}
?>
Proc je jeden parametr konstruktoru typu Selection a druhy Task ?? Vzdyt task dedi od Selection tudiz by na oba slo pouzit selection. Unika mi asi nejakej vyznam vzdyt s obema se da pracovat stejne potom.
- awsickness
- Člen | 98
no sice nevim o cem je quickstart ale tohle bude pro podporu IDE ktere pak umi napovidat jestli ti jde o ty komentare.
- frosty22
- Člen | 373
No spise je to kvuli prehlednosti DI, prestoze by se ta zavislost dala ziskat z toho objektu (to nvm musel bych si overit v tom tutorialu) tak je lepsi ji primo predat, jelikoz je pak jasne jake zavislosti objekt pozaduje, nez kdyz jsi je taha z jineho objektu. Pokud bys zmenil objet tasks aby nepotreboval selection tak uz se k nim nedostanes.
- Panda
- Člen | 569
Ano, s oběma se dá teoreticky pracovat stejně, ale jen jednou – po
sestavení dotazu lze objekt použít jen pro ten daný druh dotazu, nic
jiného. Pokud bych použil na oba dotazy jen jeden objekt, tak se mi při
druhém dotazu budou míchat části obou. V tomto konkrétním případě by
pak dotaz na celý seznam úkolů obsahoval část WHERE id = ...
,
což nechceš. Druhý parametr je tak myšlen jako čistý odkaz na tabulku a
první jako výraz sloužící čistě k výběru dat.
Bohužel je to trochu nepříjemné, ale nenašel jsem lepší řešení, jak tuto „jednorázovost objektů“ obejít.
- Fires
- Člen | 97
Diky za odpovedi , mno mam ty databazi jeste trocha bordel, v nette sem delal pred rokem ted sem se k tomu vratil a hodne se toho zmenilo .. jeste bych mel maly dotaz. Kdyz je nutne vytvaret novou instanci Selection pro kazdy dotaz, jak to resite v komponentach, resp. jak se k te tovarnicce dostanete vzhledem k tomu ze v komponente nelze volat $this->context ;