Dupa cum v-am spus in tutorialele anterioare, putem ajunge in situatia in care refolosim o parte din cod, atunci punem partea respectiva in functii pe care le apelam in loc sa dam copy/paste la tot codul respectiv. Dar in momentul in care avem mai multe functii care sunt legate intre ele – exemplu functii pentru administrarea unei baze de date (cautare, editarea unor date sau adaugarea de date noi) putem grupa aceste functii intr-o clasa. Va puteti intreba care sunt avantajele crearii undei clase, cand putem pune functiile direct intr-un fisier pe care sa-l includem mereu. Unul dintre avantaje ar fi datele returnate de functii, in PHP ca in majoritatea limbajelor de programare, o functie de sine statatoare poate intoarce o singura valoare (in Pascal existau procedurile care puteau returna mai multe valori, iar in C++ sau Java trebuie specificat tipul valorii returnate). Prentru a putea prelua mai multe date dintr-o functie o putem integra intr-o clasa si putem folosi elementul cheie $this.
Pe langa functii (metode), clasele pot contine si variabile (atribute), care sunt accesibile unui obiect instantiat din clasa respectiva. Elementul $this, se refera la obiectul curent – inlocuieste numele obiectului, pe care in clasa la creare nu-l stim, ea nefiind instantiata inca.
Deci astfel putem avea, intr-o clasa simpla, urmatoarele:
class Student{
private $nota;
private $id;
private $nume;
private $materia;
public function get_id(){
return $this->id;
}
public function invata($nume){
if($this->nume==$nume){
$this->nota=10;
$this->materia='PHP';
}
}
}
Atat metodele cat si atributele pot fi de 3 feluri, dupa tipul de acces la ele: public, protected si private. Declarate public, inseamna ca ele pot fi apelate oriundem exemplu de apel:
$variabila = Student::get_id();
Private si protected, inseamna ca exista restrictii pentru metoda/atributul respectiv, diferenta fiind ca cele private sunt inaccesibile in afara clasei, iar cele protected sunt accesibile doar claselor derivate din clasa respectiva.
Putem totusi accesa datele prin cele 2 functii, care se mai numesc si setter si getter, si de obicei au prefixul set_ sau get_, functia invata nu este chiar un setter normal, deoarece modifica 2 atribute: nota si materia. De asemenea se poate realiza astfel un getter precum get_atribute, dar care sa returneze de exemplu toate datele din baza de date, pentru id-ul respectiv, exemplu:
public function get_atribute(){
$query = 'SELECT * FROM `student` WHERE `id`="'.$this->id.'"';
$res = mysql_query($query);
while ($row=mysql_fetch_assoc($res)){
$this->nume =$row['nume'];
$this->nota =$row['nota'];
$this->materia =$row['materia'];
}
}
Chiar daca nu apare ca si parametru in functie, este transmis $id prin $this->id. Functia dupa cum se vede returneaza 3 variabile.
In cazul in care dorim ceva mai specific, clasa poate fi extinsa(derivata), de exemplu din Student putem extine o clasa doar pentru cei care sunt la buget.
class Student_la_buget extends Student{
//corpul clasei... cod
}
Related Posts :
Deoarece in tutorialele anterioare, mai ales in PHP 2, nu am folosit decat functiile disponibile ...
Salutare! Stiu ca probabil te asteptai sa gasesti alt blog la adresa asta. Eugen a decis sa r ...
Zilele trecute aveam nevoie de sa scriu putin cod in Windows. Cum mai mult am stat pe Ubuntu, nu ...
Intrucat deja ma scris cateva tutoriale despre PHP si MySql, cred ca a venit vremea sa arat si c ...
Voi trece direct in partea interesanta a PHP, si anume cum sa scriem formulare in HTML si cum sa ...









