Dotaz ohledne konstruktoru v Todo

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

Ahoj,
s Nette zacinam a jedu podle manualu kde se stavi Todo aplikace.
Vse mi funguje, jenom mam mensi problem pochopit proc.
Proto bych se chtel zeptat na nasledujici:

  1. Kdyz se pise model, je rozdelen na Todo.php a TodoManager.php. Proc? Ano pise se tam, ze to kvuli navrhovemu vzoru Active Record, ale moc jsem nepochopil tu vyhodu rozdeleni. To v TodoManageru budu mit vzdy jenom vyberove dotazy? Mohl by mi to prosim nekdo vice rozvest?
  2. Jeste mam jeden dotaz. Co presne ve tride /app/models/Todo.php dela toto:
public function __construct($arr = array())
{
    parent::__construct($arr);
}

Predem dekuji za odpoved.

Filip Procházka
Moderator | 4668
+
0
-

Ten konstruktor bude nejspíše pozůstatek nějaké myšlenky, kterou autor nedokončil, nebo smazal.

Návrhový vzor (což je označení pro jednou vymyšlený abstraktní postup jak přemýšlet, co vytvořit a jak to spolu má pracovat, pro konkrétní abstraktní problém) ActiveRecord (už podle názvu) představuje spolupráci dvou tříd. „Aktivní entity“ a jejího manageru. „Aktivní entita“ sama sebe umí uložit a smazat. Manager má v popisu práce poskytnout rozhranní a funkce pro získávání existujících entit z databáze. V zásadě všechny návrhové vzory se snaží určitý problém rozdělit na logické celky a ty pak mezi sebou propojovat. Takovým logickým celkem pak může být TodoManager, který se ti stará o to získávání entit aby jsi nikde v presenterech nemusel psát SQL dotazy. Když se pak například změní databáze, změny pak provádíš na jedno místě, v TodoManageru a né v každém presenteru zvlášť.

Doporučuji ti přečíst si tento článek, jako další krok ve tvém vývoji přemýšlení o modelu. Návrhový vzor Entity-Repository-Mapper totiž jde ještě dál a kompletně všechny metody na ukládání, mazání,… z entity přenáší do Manageru a ten pak ještě rozdělí na dva logické celky.