NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Paginátor (stránkování výsledků) v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hynek:1.8.2013 22:22

A není to už zbytečné kombinování? když teprve HTML kod vytvářím.
To co píše Kit beru. Ten můj kod je krátký, ale kdyby to bylo větší, už by případná úprava HTML byla komplikovanější. Díky

Odpovědět
1.8.2013 22:22
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Kit:1.8.2013 22:24

DOMDocument je datová struktura typu strom. Je na zvážení, zda nejprve nasázím odkazy do array() a pak je teprve hromadně převedu do DOMDocument nebo to nahážu do DOMDocument přímo. Při generování stromu už musíš ošetřit stringy, což patří už do prezentační části. Ovšem tato část aplikace se stejně dává do vieweru, tak by to nemělo vadit.

Osobně bych použil přímo DOMDocument, ale nechtěl jsem tím David Hynek zatěžovat. Patří to mezi pokročilé techniky, které nezvládá mnoho profesionálů a místo toho se vrhají na Smarty.

Odpovědět
1.8.2013 22:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hynek
Kit:1.8.2013 22:28

Když používáš DOMDocument, tak ve skriptu neuvidíš ani kousek HTML. Ta třída ho generuje sama, výsledkem je vždy validní XML nebo jeho fragment. Ten tvůj kód by se tím zkrátil.

Odpovědět
1.8.2013 22:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Martin Konečný (pavelco1998):1.8.2013 22:52

Kite, děkuji za vysvětlení.

Davide, co se ještě týká samotného Paginatoru, tak osobně mi kód přijde poměrně nepřehledný. Myslím, že nebudu jediný, komu tam chybí mezery mezi operátory (btw, někde mezery jsou, někde ne - asi by to chtělo psát jedním stylem).

Také bych byl trošku opatrnější s použitím ternárního operátoru. Například na tomto řádku

$n = ($a+$p-((($p-1)<$this->roztec)?$p-1:($p<($this->rozsah-$this->roztec)?$this->roztec:$p-$this->rozsah+(2*$this->roztec))));

mi přijde, že to přehlednost spíše zhoršilo než zlepšilo.

Taktéž bych v každém případě nevolil jednopísmenný název proměnných (kromě těch, které slouží k inkrementaci (např. pro cyklus for)).

Pak jsem ještě zvyklý psát bloky i v případě, že následuje jen jednořádkový příkaz, také si myslím, že to přidá přehlednosti.

Odpovědět
1.8.2013 22:52
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hynek
Kit:1.8.2013 22:53

Ještě koukám na tvůj zápis

if($this->celkem == 0) return "\tNejsou zde žádné výpisy.\n";

který není zrovna ideální. Představ si, že bych při prázdném seznamu chtěl generovat jiný nápis nebo bych nechtěl generovat nic. Běžně se v seznamu něco vyskytovat bude, pokud tam nebude nic, bude to výjimka:

if($this->celkem == 0) throw new Exception("Nejsou zde žádné výpisy.");

A je to. Samozřejmě je vhodné místo Exception vyrobit nějakého potomka, aby se to nemíchalo s běhovými chybami, ale pro tento účel jsem to zjednodušil.

Výhodou výjimek je mimo jiné také to, že mohou mít jiný typ návratové hodnoty než výsledek funkce. Pokud je výsledek parametrem jiné metody, ta se už neprovede. Není tedy nutné testovat data při předávání mezi objekty. Ošetření výjimky se dá udělat klidně i jediné pro celou aplikaci.

Editováno 1.8.2013 22:55
Odpovědět
1.8.2013 22:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
David Hynek:2.8.2013 0:17

:) tohle je paráda. Pohled od profíků je cennější než sebelepší tutoriál.

Než sem dám nějaký další svůj script tak se zkusím zlepšit.

Díky moc chlapi.

Odpovědět
2.8.2013 0:17
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hynek
Kit:2.8.2013 1:30

Neboj se toho a dávej sem další skripty. Možná bude výhodnější použít http://www.itnetwork.cz/dev-lighter

Na hodně postupů platí obyčejný selský rozum. Seznam, tabulka (slovník), pole, strom a množina. Někdy si stačí jen říct nahlas, co chceš vytvořit. Ostatní už jen bývá okolní omáčka.

Odpovědět
2.8.2013 1:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 17.