Základy
class
Ka¾dá definÃcia triedy zaèÃna kµúèovým slovom class nasledované názvom triedy, ktorý je µubovoµný, s výnimkou rezervovaných slov v PHP. Nasleduje pár zlo¾ených zátvoriek, ktoré obsahujú definÃciu vlastnostà a metód triedy. V ka¾dej metóde, okrem statických, je dostupná pseudo premenná $this. $this je referencia na tú istú in¹tanciu, z ktorej bola metóda volaná.
Example#1 Jednoduchá definÃcia triedy
<?php
class SimpleClass
{
// member declaration
public $var = 'a default value';
// method declaration
public function displayVar() {
echo $this->var;
}
}
?>
new
Na vytvorenie in¹tancie objektu, musà by» vytvorený nový objekt a priradený premennej. Ak sa vytvára nový objekt, v¾dy je priradený premennej, s jedinou výnimkou, a to ak objekt obsahuje kon¹truktor, v ktorom je definovaná výnimka, vracajúca chybu.
Example#2 Vytváranie in¹tancie
<?php
$instance = new SimpleClass()
?>
Ak priraïujeme u¾ existujúcu in¹tanciu objektu novej premennej, tak nová premenná bude pristupova» k tej istej in¹tancii ako premenná, ktorej bol pôvodný objekt priradený. Toto isté správanie je aj pri predávanà in¹tancie ako parametru funkcii. Nová in¹tancia u¾ existujúceho objektu mo¾e by» vytvorená klonovanÃm.
Example#3 Priraïovanie objektu
<?php
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
Výstup horeuvedeného prÃkladu bude:
NULL NULL object(SimpleClass)#1 (1) { ["var"]=> string(30) "$assigned will have this value" }
extends
Trieda mô¾e zdedi» metódy a vlastnosti inej triedy pou¾itÃm kµúèového slova extends v deklarácii. Nie je mo¾né dedenie z viacerých tried, trieda mô¾e dedi» iba z jednej základnej triedy.
Zdedené metódy a vlastnosti mô¾u by» nahradené, s jednou výnimkou, a to, ak je v rodièovskej triede definovaná metóda ako final, opakovanou deklaráciou s tým istým menom metódy, aké bolo pou¾ité v rodièovskej triede. Je taktie¾ mo¾né pristupova» k nahradeným metódam alebo vlastnostiam rodièovskej triedy, odkazovanÃm sa pomocou parent::
Example#4 Jednoduché dedenie triedy
<?php
class ExtendClass extends SimpleClass
{
// Redefine the parent method
function displayVar()
{
echo "Extending class\n";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
?>
Výstup horeuvedeného prÃkladu bude:
Extending class a default value