PHP pro pokročilé

Postupy při řešení problémů už nebudou do detailu popsané, takže zůstane více prostoru pro teorii. Dnes se vše točí okolo objektů, a tak i mé povídání bude většinou objektově orientované.

Pokročilé stránkování v PHP

Za víc než 10 let, co svou stránkovací knihovnu používám, už prošla řadami změn. Od nepatrných, jako jsou bug fixy až po zásadní, jako například změna parametrů v konstruktoru. Některé nové funkce byly přidány, ale základní kostra je víceméně stejná. Ano, už jste asi pochopili, že v následujícím článku vás nebudu učit, jak vypsat cyklem stránkování. Raději vám představím hotové řešení: takové, které na pár řádcích zařídí vše potřebné. Vy pak nemusíte řešit malichernosti a soustředit se na důležitější věci. Například optimalizace SQL dotazů. 

Celý článek

Správa redirectů s využitím databáze

Je tomu už příliš dlouho, co jsem naposledy psal nějaký článek z oboru, a tak je nejvyšší čas tento nedostatek napravit. Je tomu už podobně dlouho, co jsem naposledy něco skutečně programoval, a tak doufám, že můj kód nebude ostuda. Ale chtěl bych své články na téma zábava zase občas proložit něčím víc technickým. Většina mých článků je směrovaná na vývojáře začínající, dnes to bude ale spíš na ty středně pokročilé. Podíváme se na správu redirectů. 

Celý článek

Objekty v PHP5 - Skládání objektů, abstrakce a dědičnost

V dnešním článku si povíme něco víc o objektech, a to konkrétně o skládání objektů, dědičnosti, abstrakci a samozřejmě i viditelnosti, jejíž znalost je k výše uvedeným technikám nezbytná. Na první pohled se může zdát o složité termíny, ale jejich samotné použití nijak náročné není. Mnohem složitější je správné použití. Nepřidávat dědičnost jen proto, abychom ukázali, že ji umíme, nenaplácat všechna klíčová slova do jedné třídy jenom aby tam byly. To je také hlavní důvod, proč píšu samostatný text, důvod, proč nemohu vše demonstrovat na své databázové třídě.

Celý článek

Návrh databázové třídy - díl VI - Závěr

Šestým dílem bych rád uzavřel svůj seriál o databázové třídě a úvod do objektového programování v PHP5. Ukázali jsme si středně složitou třídu s obsluhou většiny typů SQL dotazů, které využijeme pro projekt průměrné náročnosti. Kromě naprosto základních funkcí jako ošetření SQL dotazů proti SQL injection umí i jednoduché logování, export databáze buď do souboru nebo přímo do force downloadu i vlastní obsluhu chyb. Posílání chyb na e-mail zde ale obsažené není: na notifikační e-maily mám třídu další, o které si můžeme povědět v jiném článku. Nesmím také vynechat možnost připojení k více databázím v rámci jednoho projektu: i to class Db zvládne. Tak hurá na rekapitulaci.

Celý článek

Návrh databázové třídy - díl V - Logování změn

V dalším pokračování seriálu o objektovém programování v PHP si ukážeme, jak přidat do ukázkové třídy DB logování konkrétních SQL dotazů. Rozebereme si tedy znovu metody na insert, update a delete, které rozšíříme o další zápis do nové tabulky, kam budeme ukládat informace o provedených změnách. Nejdřív ale krátká rekapitulace. Soubor článků o objektech v PHP jsem začal psát už poměrně dávno, ještě před pauzou v blogování. Jelikož jsem měl ale na články vcelku pozitivní ohlasy, byla by asi škoda seriál nedokončit, byť opožděně.

Celý článek

Návrh databázové třídy - díl IV: Export databáze

Dnešní pokračování pohádky o databázové třídě si vezme pod lupu pár konkrétních metod. Půjde o funkce na export celé databáze s možností force download nebo postupného ukládání do souboru. O možnostech exportu databáze moc článků napsáno nebylo, navíc se nejedná o úplně triviální algoritmus s pár vnořenými cykly. V následujícím článku vám předvedu, jak problém vyřešit s elegancí.

Celý článek

Návrh databázové třídy - díl III: class Query

V minulém dílu seriálu o objektech v PHP5 a živém příkladu v podobě databázové třídy jsme si ukázali základní metody na typové SQL dotazů. Každá z těchto metod skončila vytvořením instance třídy Query, respektive zavoláním některé její metody. Jak to všechno funguje uvnitř třídy Query bude tématem tohoto článku. Krátce ještě zopakuji, co vše už máme: jsou to základní metody třídy Db pro volání SQL dotazů: SELECTUPDATEINSERTDELETE. Hodnoty, které nás zajímají při změně či odstranění řádků tabulky už máme přímo v návratových hodnotách jednotlivých metod. Co ale ještě hotové nemáme, je zpracování klasického výběru dat z databáze.

Celý článek

Návrh databázové třídy - díl II: Základní metody

V úvodu svého seriálu o databáziobjektech jsem nakousnul základní témata, kterými bude směřovat postup realizace. V pokračování uvedu elementární metody na nečastější typy SQL dotazů. Naším cílem bude již zmiňované omezení otravných operací spolu s maximálním zjednodušení zápisů konkrétních typů dotazů. Nepodstatný výčet členských proměnných přeskočím a přejdu rovnou ke konstruktoru třídy.

Celý článek

Návrh databázové třídy - díl I: Úvod, cíle

Jaro už je pomalu za dveřmi, je nejvyšší čas pustit se do objektů. Jako učební pomůcku jsem zvolil právě databázový layer, jelikož na jeho návrhu a tvorbě se dá mnohé ukázat i vysvětlit, o využití v praxi nemluvě. Sám jsem začínal zprvu jednoduchým podnětem: potřebou monitorovat a sčítat provedené SQL dotazy. Skutečný život se ale následně ukázal mnohem složitější, a tak bylo potřeba napsat pokročilou knihovnu, která toho co nejvíce udělá za mě. Proto nyní otevírám miniseriál tak trochu o objektech a tak trochu o návrhových vzorech.

Celý článek

PHP: Vlastní error handler

Je tomu již více jak tři roky, kdy můj internetový deníček střídavě funguje a nefunguje. Je proto nejvyšší čas rozdělit články v kategorii PHP na dvě další dle obtížnosti. Proto bych rád kategorii PHP pro pokročilé otevřel článkem, ve kterém ukážu jak na chyby se vším všudy. Jelikož už se se standardními zprávami typu "Fatal error: Call to undefined function..." nespokojíme, je potřeba si rozšířit znalosti o některé funkce a předdefinované třídy, jenž nám ulehčí vývoj aplikací.

Celý článek