Základy objektově orientovaného programování (OOP) nalezneme také v PHP. OOP by mělo náš kód zpřehlednit a zvýšit efektivnost naší práce.
Třídu si lze představit jako typ, kterému jsou přiřazeny určité funkce. Po deklaraci třídy můžeme vytvářet její instance (objekty). Deklarace třídy vypadá následovně:
class < název třídy > { < členské proměnné > < členské funkce > }
Ukázková třída může vypadat třeba takto:
class Auto { }
Jsou to lokální proměnné, do kterých můžeme ukládat data. S těmito proměnnými můžeme následně manipulovat pomocí členských funkcí. Členskou proměnnou deklarujeme většinou na začátku třídy s klíčovým slovem var. Pokud budeme deklarovat více proměnných, můžeme je oddělit čárkami. Příkladem může být následující třída, která bude obsahovat několik členských proměnných:
class Auto { var $Znacka, $Typ; }
Nyní již můžeme vytvořit instanci této třídy a pracovat s členskými proměnnými.
<? // Deklarujeme třídu Auto. class Auto { // Deklarujeme členské proměnné. var $Znacka, $Typ; } // Vytvoříme instanci třídy Auto. $auto = new Auto; /* Do členských proměnných dosadíme hodnoty pomocí znaku "->" a názvu proměnné bez znaku "$". */ $auto->Znacka = "Peugeot"; $auto->Typ = "206"; // Pro kontrolu si můžeme vytisknout obsah proměnné $Typ. echo $auto->Typ; ?>
Jak již bylo řečeno, členské funkce umožňují práci nejen s členskými proměnnými, ale i s databází, soubory, atd. Na příkladě si ukážeme členskou funkci, která nám zobrazí obsah proměnné $Znacka a $Typ.
Jak si všimnete na příkladě, pracujeme uvnitř funkcí s členskými proměnnými pomocí zápisu "$this->NazevPromenne". Za klíčové slovo "$this" se po vytvoření instance automaticky doplní název instance třídy.
<? // Deklarujeme třídu Auto. class Auto { // Deklarujeme členské proměnné. var $Znacka, $Typ; // Deklarujeme členskou funkci Vypis. function Vypis() { echo $this->Znacka." ".$this->Typ; } } // Vytvoříme instanci třídy Auto. $auto = new Auto; /* Do členských proměnných dosadíme hodnoty pomocí znaku "->" a názvu proměnné bez znaku "$". */ $auto->Znacka = "Peugeot"; $auto->Typ = "206"; // Zavoláme členskou funkci Vypis. $auto->Vypis(); ?>
Konstruktor je členská funkce, která má stejný název jako název třídy. Pomocí konstruktoru můžeme uvnitř třídy vykonat určitý kód ihned po vytvoření její instance. Stejně jako u funkcí můžeme v konstruktoru ponechat implicitní hodnoty.
<? // Deklarujeme třídu Auto. class Auto { // Deklarujeme členské proměnné. var $Znacka, $Typ; /* Deklarujeme konstruktor, který bude přebírat $znacka a $typ. */ function Auto($znacka, $typ) { $this->Znacka = $znacka; $this->Typ = $typ; } // Deklarujeme členskou funkci Vypis. function Vypis() { echo $this->Znacka." ".$this->Typ; } } // Vytvoříme instanci třídy Auto. $auto = new Auto("Peugeot", "206"); // Zavoláme členskou funkci Vypis. $auto->Vypis(); ?>
Dědičnost umožňuje vytvoření nové třídy, která "zdědí" všechny členské funkce a členské proměnné výchozí třídy. Můžeme si tak vytvořit třídu, která bude stejná například pro všechny typy aut a pro jednotlivé značky si vytvořit novou třídu, která zdědí výchozí členské proměnné a členské funkce. Vytvořit novou třídu, která zdědí členské proměnné a členské funkce můžeme pomocí klíčového slova extends.
<? // Deklarujeme třídu Auto. class Auto { // Deklarujeme členské proměnné. var $Znacka, $Typ; // Deklarujeme členskou funkci Vypis. function Vypis() { echo $this->Znacka." ".$this->Typ; } } class AutoVykon extends Auto { var $Vykon; function VypisVse() { echo $this->Znacka." ".$this->Typ." ".$this->Vykon; } } // Vytvoříme instanci třídy Auto. $auto = new AutoVykon; /* Do členských proměnných dosadíme hodnoty pomocí znaku "->" a názvu proměnné bez znaku "$". */ $auto->Znacka = "Peugeot"; $auto->Typ = "206"; $auto->Vykon = "90"; // Zavoláme členskou funkci Vypis. $auto->VypisVse(); ?>
Pro tento díl to bude vše. V příštím díle si povíme o formulářích..