Objektové programování v PHP 5

Seriál Jakub Mrozka „OOP v PHP“ je tím nejucelenějším zdrojem informací, který o objektově orientovaném programování v PHP 5 v českém jazyce najdete. Ačkoliv na serveru Interval.cz vycházel v roce 2006, informace jsou stále aktuální.

Základy OOP

Termín OOP znamená objektově orientované programování (dále už jen OOP), což je způsob programování, kdy chápeme procesy jako entity. Tedy zkráceně řečeno, nepotřebujeme vědět, jak daný program funguje, ale musíme vědět, jak tento program používat.

Dědičnost

Občas chceme vytvořit třídu podobnou té, kterou už máme definovánu. Bylo by naprosto zbytečné, kdybychom vše přepisovali – stačí pozměnit pouze stávající třídu. Proces, kdy vytváříme novou třídu, která přebírá libovolné metody a atributy, se právě nazývá dědičnost.

Viditelnost

PHP 5 umožňuje definovat vlastnostem i metodám viditelnost pomocí zvláštních klíčových slov. PHP tedy dělí atributy (vlastnosti) a metody na public, protected a private.

Statické vlastnosti a metody

PHP nám dovoluje definovat metodu nebo vlastnost jako statickou. Znamená to, že se váže na třídu a nikoli na danou instanci. Statická metoda se definuje frází „static“, které se uvádí po klíčových slovech viditelnosti.

Speciální metody

PHP 5 obsahuje zvláštní metody, které provádějí určitou speciální činnost, pro niž byly zvlášť navrženy. Mezi základní takové metody patří __destruct(), __clone() a __construct().

Objektové konstanty

Uvnitř třídy je možné definovat objektovou konstantu. Odlišnost od vlastnosti třídy spočívá v tom, že se hodnota konstanty nikdy nemění, neuvádí se znakem $ a neváže se k instanci, ale k příslušné třídě.

Operátor dvojitá dvojtečka

Oficiální název operátoru :: je „Paamayim Nekudotayim“ (hebrejský výraz pro dvě dvojtečky), mohl by být nazýván také „oblastní operátor“, případně „dvojitá dvojtečka“.

Objektové rozhraní

Objektové rozhraní lze charakterizovat jako šablonu vzoru. Pokud vytváříte velké třídy, které zahrnují a volají další třídy na základě různých okolností, občas se může stát, že budete volat metodu, která není nikde definovaná. Abychom předcházeli takovým chybám, PHP 5 umožňuje specifikovat objektové rozhraní.

Abstraktní třída

Abstraktní třída (abstrakce) je třída, která obsahuje jak abstraktní metody, tak hotové metody. Abstraktní třídy nesmí vytvářet instance, mohou být ale děděny a jejich potomci po implementaci potřebných metod instance vytvářet mohou. Metody označené jako abstraktní nemohou definovat obsah, pouze specifikují název a případné argumenty.

Typová kontrola

Typová kontrola znamená, že argumenty předávané třídě budou kontrolovány na svůj původ a typ.

Operátor instanceof

Operátor „instanceof“ umožňuje jednoduše zjišťovat, zda daný objekt je instancí konkrétní třídy či rodiče, nebo zda je implementací nějakého rozhraní.

Využití OOP v praxi

Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování v PHP.

Výjimky v OOP

PHP 5, na rozdíl od předešlých verzí, umožňuje využívání výjimek stejně jako ostatní programovací jazyky. Výjimky rozšiřují možnosti ošetřování vzniklých chyb v PHP.

Jmenné prostory

Novinka od PHP 5.3, která řeší možné jmenné konflikty v názvech tříd.

Fluent Interfaces

Takzvané „Fluent Interface“ (česky též „plynulé rozhraní“ nebo „řetězcovité volání“) je způsob spojování metod jednoho či více objektů, který usnadňuje předávání pracovního kontextu objektu. Výhodou je zmenšení a celkové zpřehlednění kódu.

Composer

Composer je nástroj na správu závislostí v PHP. Dovoluje nám deklarovat libovolně složité závislosti jednotlivých knihoven a pak je za nás nainstaluje do našeho projektu.