Forum und email

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