Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Poznámky k MVC

Aktivity
Avatar
Kit
Tvůrce
Avatar
Kit:27.12.2012 18:52
  1. Tabulky se mají pojmenovávat v jednotném čísle. Je to tak i v učebnicích.
  2. Pokud vytáhnu z DB data v asociativním poli, tak je v něm i nechám. Místo pracného přiřazování po jednom kousku stačí udělat jen
$mc = new ManazerClanku();
$data = $mc->vratClanek($parametry[0]);

a mám to v objektu uloženo. Těch dalších 7 řádek, co tam máš, je jen potenciální zdroj chyb a ničemu neslouží.

3. Kopírování klíčů z jednoho pole do druhého mi připadá samoúčelné a zdržující. Vždyť se to přece dá udělat v getteru jedním příkazem.

4. Je zbytečné se ptát DB, jestli článek existuje. Buď ho potřebuji číst a vytáhnu si ho, anebo ho chci uložit a uložím ho. Případně ho můžu chtít změnit nebo smazat, ale ani k jednomu úkonu nepotřebuji vědět, zda se článek v DB nachází.

Odpovědět
27.12.2012 18:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:27.12.2012 19:07
  1. Vídám obě varianty. DB výchází z tamtoho seriálu, ještě jsme to spolu chtěli učesat, ale nějak z toho pak sešlo.
  2. Těch 7 řádek vzápětí změním na 2, jsou tam jen ilustrační.
  3. Jak bys to udělal getterem?
  4. Toho si jsem vědom, jenže já chci článek načítat až v ClanekKontroler a informaci o jeho existenci potřebuji již v routeru. Zas tak neefektivní to být nemůže a přijde mi to logičtější.
Nahoru Odpovědět
27.12.2012 19:07
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:27.12.2012 19:26
  1. To vím. Právě proto se snažím, abychom to tady měli správně. Ono to k tomu plurálu svádí samo a těžko se tomu brání.
  2. Pokud bych někde v aplikaci potřeboval hlavičku, tak si ji vytáhnu:
public function getHlavicka() {
   return array(
       'titulek' => $clanek['titulek'],
       'klicova_slova' => $clanek['klicova_slova'],
       'popis' => $clanek['popis'],
   );
}

nebo klidně i tím "hezkým" zápisem

public function getHlavicka() {
   return array_intersect_key($clanek,
       array_flip(array('titulek', 'klicova_slova', 'popis')));
}

Prostě teprve tehdy, kdy to budu potřebovat.

4. K čemu potřebuješ informaci o existenci článku? Pokud neexistuje, vyhodíš výjimku.

Nahoru Odpovědět
27.12.2012 19:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:28.12.2012 11:26
  1. Dobře, už to tak dopíšu, pak DB najednou upravím zde i v seriálu předtím. Mám rád inkrementální přístup a kdybych to zas měnil, tak bych to tady nikdy nedopsal :)
  2. Hlavička se netahá vždy z článku, vyplňuje ji kontroler, ve kterém někdy článek vůbec není.
  3. Potřebuji ji ke zkrácení URL. Výchozí URL je "nazev-clanku". Předpokládám tedy vlastně toto url: "clanek/nazev­clanku", kde článek je kontroler. Pokud článek neexistuje, začnu předpokládat toto URL: "kontroler/pa­rametr" a sahám po jiném kontroleru, než po tom článkovém. Již v routeru tedy potřebuji znát existenci článku. Toto je přesně ten rozpor mezi OOP a DB pohledem, kdy já preferuji zavolat 2 dotazy kvůli zachování nějaké filozofie v aplikaci.
Nahoru Odpovědět
28.12.2012 11:26
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:28.12.2012 16:08

3. Nejeví se mi to jako nejlepší řešení.

4. Tohle by se mělo rozhodnout už ve Factory, ne?

Nahoru Odpovědět
28.12.2012 16:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
zdenek.kral
Člen
Avatar
zdenek.kral:30.12.2012 18:13

Hele kluci,

diskuse je fajn, ale mela by vest ke konkretnimu zaveru na kterem se shodnou obe strany ( v tomto pripade ) a kompromisne zvoli tu lepsi variantu reseni. Vemte si, ze tohle cte nekdo, kdo to s PHP mysli vazne a rad by se neco priucil, ale po precteni diskusnich prispevku ma v hlave akorat pekny gulas a .... kterou variantou se ma vydat na sve zacinajici programatorske draze ??)))

Zaver typu: "Nejevi se mi to jako nejlepsi reseni", by asi nemelo byt tim poslednim k danemu tematu bez odezvy autora !

Zdravi Zdenek

 
Nahoru Odpovědět
30.12.2012 18:13
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na zdenek.kral
David Hartinger:30.12.2012 19:16

Autor napsal 80% obsahu tohoto webu, proto občas na nějaký komentář zapomene. Již jsme s Kitem toto probírali a máme odlišný názor na roli kontroleru v MVC architektuře.

Nahoru Odpovědět
30.12.2012 19:16
You are the greatest project you will ever work on.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.