d9m16mi
O clasa este o colectie de variabile si de functii care utilizeaza aceste variabile.
O clasa se defineste utilizand urmatoarea sintaxa:
class Cart
A var $items; // Tablou asociativ de articole
// Adauga $num articole de tipul $artnr function add_item( $artnr, $num)
A
$this->itemsa $artnri += $num;
S
// Elimina $num articole de tipul $artnr function remove_item( $artnr, $num)
A if( $this->itemsa $artnri > $num)
A
$this->itemsa $artnri -= $num; return true;
S else
A return false;
S
S
SConstructia de mai sus defineste o clasa Cart formata dintr-un tablou asociativ
de articole si doua functii pentru a adauga si a elimina articole din tablou.
Nota: in PHP4 sunt permisi doar initializatori constanti pentru variabile
var. Pentru initializatorii neconstanti trebuie folositi constructori.
/* Acest exemplu nu va functiona PHP4 */ class TestClass
A var $todays_date = date( "Y-m-d"); var $name = $a_name;
S
/* Asa trebuie procedat */ class TestClass
A var $todays_date; var $name;
function Cart()
A
$this->todays_date = date( "Y-m-d);
$this->name = $GLOBALSa 'a_name'i;
S
SClasele sunt tipuri. Pentru a crea o variabila de tipul dorit se foloseste
operatorul new.
$cart = new Cart;
$cart->add_item( "10", 1);Acest cod creaza un obiect $cart din
clasa Cart. Functia add_item() a acestui obiect este apelata pentru a adauga
un articol cu numarul 10 in tabloul $cart->items.
Clasele pot fi extensii ale altor clase. Aceasta notiune se numeste mostenire.
Clasa extinsa sau derivata poseda toate variabilele si functiile clasei de baza
alaturi de variabilele si functiile definite in extensie. Acest lucrul
se realizeaza utilizand cuvantul cheie extends. Mostenirea multipla
nu este acceptata.
class Named_Cart extends Cart
A var $owner;
function set_owner( $an_owner)
A
$this->owner = $an_owner;
S
SCodul de mai sus defineste o clasa Named_Cart care are toate variabilele si
functiile din Cart plus o variabila suplimentara $owner si o functie suplimentara
set_owner(). Puteti crea un obiect $ncart cu operatorul new si apoi puteti seta
proprietatile obiectului.
Exemplu:
$ncart = new Named_Cart; // Creaza un nou obiect
$ncart->set_owner( "Kris"); // Seteaza proprietatea owner print $ncart->owner;
$ncart->add_item( "10", 1); // Mostenire de la clasa de bazaIn
functiile unei clase variabila $this inseamna obiectul curent. Pentru
a accesa o variabila sau functie a obiectului curent, numita $proba, trebuie
sa utilizam constructia $this->proba. Atat in interiorul cat
si in afara obiectului, nu este necesar semnul '$' ( in fata unei
"proprietati") cand accesati o proprietate a acestuia.
Exemplu:
$ncart->owner = "Chris"; // Fara $ in fata proprietatii
$owner
$ncart->$owner;
// Este invalid deoarece $ncart->$owner = $ncart->""
$my_var = 'owner';
$ncart->$my_var = "Chris";
// Este corect deoarece $ncart->$my_var = $ncart->ownerConstructorii sunt
functiile dintr-o clasa care au acelasi nume cu clasa. Ei sunt automat apelati
cand creati o noua instanta a clasei.
class Auto_Cart extends Cart
A function Auto_Cart()
A
$this->add_item( "10", 1);
S
SAcest cod defineste o clasa Auto_Cart care extinde clasa Cart plus un constructor
care initializeaza obiectul cu un articol, avand numarul 10 de fiecare
data cand un nou obiect de tipul Auto_Cart este creat cu operatorul new.
Constructorii pot avea argumente (pot fi optionale), caracteristica care ii
face foarte utili.
class Constructor_Cart extends Cart
A function Constructor_Cart( $item = "10", $num = 1)
A
$this->add_item( $item, $num);
S
S
$default_cart = new Constructor_Cart;
$different_cart = new Constructor_Cart( "20", 17);