|
Definitia unei clase
Dupa ce am explicat conceptele de baza ale POO, sa vedem in continuare cum anume se defineste o clasa:
<?php
class Urs {
public $nume;
public $varsta;
public function mananca() {
echo $this->nume." mananca... ";
}
}
?>
Orice definitie a unei clase incepe prin cuvantul cheie class, urmat de numele clasei. Acesta poate fi orice sir de caractere, in afara unui cuvant rezervat PHP, fiind urmat de o pereche de acolade ce include variabilele si functiile clasei.
PHP5 introduce un nou concept care nu este disponibil in PHP4: specificatorii de acces. Acestia controleaza gradul in care proprietatile obiectelor si metodele lor pot fi manipulate din exteriorul clasei, avand un rol important in ceea ce priveste securitatea claselor. Exista trei specificatori de acces, de la cel mai permisiv la cel mai restrictiv: public, private si protected. In definitia unei clase poti marca gradul de vizibilitate al unei proprietati sau metode precedand-o cu unul dintre cele trei cuvinte cheie.
In mod implicit, proprietatile si metodele unei clase sunt public. Aceasta inseamna ca ele pot fi accesate direct si manipulate de catre un script care nu se afla in interiorul clasei. Daca nu doresti acest lucru, il poti impiedica utilizand specificatorii de acces private sau protected, in functie de gradul de control pe care vrei sa il detina un script exterior asupra obiectelor tale.
Deoarece in PHP4 nu exista specificatori de acces, definitia clasei de mai sus nu va functiona in PHP4. In schimb, ea poate fi inlocuita cu urmatorul cod:
<?php
class Urs {
var $nume;
var $greutate;
var $varsta;
var $sex;
var $culoare;
function mananca() {
echo $this->nume." mananca... ";
}
function alearga() {
echo $this->nume." alearga... ";
}
function vaneaza() {
echo $this->nume." vaneaza... ";
}
function doarme() {
echo $this->nume." doarme... ";
}
}
?>
Avand in fata exemplul de mai sus, poti deduce usor faptul ca in PHP4 toate proprietatile si metodele unui obiect sunt public.
Pentru a crea o noua instanta a clasei de mai sus, foloseste cuvantul cheie new:
<?php
$tata_urs = new Urs;
?>
Codul din exemplul anterior s-ar putea citi ca : „creeaza un nou obiect de tipul Urs si salveaza-l in variabila $tata_urs”.
Acum poti accesa toate proprietatile si functiile clasei Urs folosind aceasta variabila. De exemplu, codul:
<?php
$tata_urs->nume = "Tata urs";
?>
s-ar traduce ca „atribuie valoarea „Tata urs” variabilei $nume a instantei $tata_urs a clasei Urs”, in timp ce declaratia:
<?php
$tata_urs->doarme();
?>
inseamna „executa functia doarme() pentru instanta $tata_urs a clasei Urs”.
Poti observa ca simbolul „->” este folosit pentru a apela diferitele proprietati si metode ale obiectelor, caracterul „$” fiind omis atunci cand accesam variabilele unui obiect.
|