Dotaz tutorial Komponenty

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Fires
Člen | 89
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

Filip Procházka
Moderator | 4668
+
0
-

A co clone? Použil jsem ho opakovaně a funguje dle očekávání.

Fires
Člen | 89
+
0
-

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 ;