Azi am început să îmi creez un framework în PHP, în aşa fel încât să am cât mai multe module (clase) refolosibile, aşa că am început cu clasa db, care lucrează cu o bază de date mySQL. Bineînţeles că n-o să postez aici toată clasa, ci o să scriu un mic tutorial despre clase în PHP.
Ce este o clasă?
N-o să dau aici o definiţie clasică a unei clase, ci, mai degrabă, prefer să fac omul să înţeleagă despre ce e vorba, fără să citească cine ştie ce definiţie "pompoasă". Aşa că încerc prin analogie. Să luăm ca exemplu cuvântul "oameni". La ce se referă acest cuvânt? Da, ai ghicit, la o clasă. Cuvântul se referă la ceva general, nu la un om anume (un anume om fiind o instanţă a clasei "oameni", sau un obiect). Ce însuşiri (proprietăţi) are clasa "oameni"? Păi, avem, printre altele: înălţime, culoarea părului, culoarea ochilor, culoarea pielii, greutate, sex etc. Reţine că toate aceste proprietăţi sunt nedefinite, pentru că nu putem spune nimic despre greutatea clasei "oameni", ci doar despre greutatea unui anumit om din această clasă. Ce acţiuni (metode) are clasa? Păi oamenii pot să zâmbească, să plângă, să gândească, să scrie, să vorbească etc. Sper că ai înţeles cum stă treaba cu clasele şi obiectele. Clasa este ceva general, care cuprinde definiţii ale proprietăţilor şi metodelor acceptate de orice obiect al clasei, iar obiectul este ceva particular, un "individ" al clasei.
La ce bun ?
Dacă vrei să scri cod structurat, ordonat, lizibil şi reutilizabil, clasele sunt mai mult decât potrivite. De exemplu, poţi face o clasă care să îţi permită accesul la o bază de date (conectare, deconectare, selecţie, inserare, ştergere, modificare), o clasă care să se ocupe de operaţii cu fişiere şi directoare (e.g. returnare listă de fişiere dintr-un director etc.) ş.a.m.d.
Cum încep?
Cea mai bună metodă de învăţare, în programare, este exemplul. Aşa că, aruncă-ţi ochii oleacă peste exemplul de mai jos:
class Oameni{
var $varsta;
var $ocupatie;
var $insurat;
var $iq;
var $nume;
function Oameni($nume, $varsta, $ocupatie, $insurat, $iq){
$this->varsta=$varsta;
$this->ocupatie=$ocupatie;
$this->insurat=$insurat;
$this->iq=$iq;
}
function spuneSalut(){
echo "Bună, mă numesc ".$this->nume.", am ".$this->varsta." de ani, ".($this->insurat ? "":"nu")." sunt însurat, sunt ".$this->ocupatie." si am IQ ".$this->iq;
}
}
$gigi=new Oameni("Gigi",20,"măturător",false,50);
$gigi->spuneSalut();
Să luăm exemplul pas cu pas. Prima linie (class Oameni) declară o clasă cu numele Oameni. Liniile care încep cu var (variabile) sunt proprietăţile clasei, anume vârstă, nume, iq, însurat (true sau false) şi ocupaţie. Apoi urmează o metodă cu acelaşi nume pe care îl poartă clasa, adică Oameni. Aceasta este o metodă specială, numită constructor, care e apelată automat, la crearea unei instanţe a acestei clase. Această metodă primeşte ca parametri proprietăţile obiectului care va fi creat şi le salvează în acest obiect. Poate te întrebi ce mai e şi chestia aia numită $this. $this e un alt fel de a spune "obiectul curent". Practic, $this->varsta=$varsta înseamnă: setează proprietatea varsta a obiectului curent la valoarea $varsta. Atenţie, nu se scrie niciodata $this->$varsta sau $obiect->$proprietate, ci $this->varsta sau $obiect->proprietate. A doua metodă, numită spuneSalut, scrie un mesaj de salut bazat pe proprietăţile obiectului. Linia $gigi=new Oameni("Gigi",20,"maturator",false,50); crează un nou obiect de tip Oameni, $gigi, cu proprietăţile: nume Gigi, vârsta 20, ocupaţie măturător, neînsurat şi cu IQ 50 (mult sub medie). La crearea lui Gigi se va apela automat metoda constructor Oameni, care va salva proprietăţile transmise. Apoi linia următoare apelează metoda spuneSalut, care va afişa, pentru obiectul nostru, următorul mesaj: "Bună, mă numesc Gigi, am 20 de ani, nu sunt însurat, sunt măturător şi am IQ 50".
Notă: Exemplul de cod este scris pentru PHP 4. În PHP 4 nu există metodă destructor. În PHP 5, proprietăţile pot fi publice, private, protejate, există şi destructor, iar metoda constructor ia numele __constructor şi metoda destructor ia numele __destructor. PHP 5 e mai avansat ca limbaj OOP, dar majoritatea hosturilor au PHP 4, aşa că nu insist prea mult pe PHP 5 deocamdată.
Happy coding!