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