Kurz PHP (6.)

Třídy a objekty

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řídy

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
	{
	
	}


Členské proměnné

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;

?>	


Členské funkce

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

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

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..

Petr Rympler