Avatar
Kit
Redaktor
Avatar
Kit:
  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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:
  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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:
  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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:
  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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na zdenek.kral
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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.