Tutoriale Wordpress

Tutoriale Wordpress, WebDesign (HTML, CSS), Webdevelopment (PHP, MySql), Photoshop, SEO, etc..

Subscribe to Tutoriale Wordpress

Tutoriale PHP 4 Clase

Posted by Emanuel On January - 23 - 2010

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
}

About the Author

Leave a Reply

?>

About Us

Tutoriale Wordpress

Flickr

Winter Morning, WenhastonIMG_1214Les mariés356