Klasat ne PHP dhe Orientimi nga Objektet Leksion
Klasat ne PHP dhe Orientimi nga Objektet Leksion 11. 1
Çfare eshte nje klase ? Konceptualisht, nje klase perfaqeson nje objekt, me metoda dhe variabla qe i shoqerohen atij.
Percaktimi i Klases <? php class dog { public $name; public function bark() { echo ‘Woof!’; } } Shembull i percaktimit te ? > nje klase per nje qen. Objekti dog ka nje atribut te vetem, emrin, dhe mund te kryeje veprimin e lehjes (barking).
Percaktimi i Klases <? php class dog { public $name; public function bark() { echo ‘Woof!’; } } ? > Percaktohet emri klases.
Percaktimi i Klases <? php class dog { public $name; public function bark() { echo ‘Woof!’; } Percaktohet nje } atribut objekti ? > (variable), emri i qenit.
Percaktimi i Klases <? php class dog { public $name; function bark() { echo ‘Woof!’; public function bark() { } } echo ‘Woof!’; ? >} Percaktohet nje veprim objekti (function), te lehurit e qenit.
Percaktimi i Klases <? php class dog { public $name; public function bark() { echo ‘Woof!’; } }} ? > Perfundon percaktimi i Klases
Percaktimi i Klases Ne menyre te ngjashme me percaktimin e nje funksioni. . . Percaktimi nuk ben asgje ne vetvete. Ai eshte nje plan, apo pershkrimi, i nje objekti. Ne menyre qe ajo te beje diçka, juve ju duhet ta perdorni klasen. . .
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? >
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? > Perfshihet skedari qe permban Percaktimin e Klases
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? > Krijohet nje instance e re e klases.
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? > Variablit emri te kesaj instance i jepet vlera ‘Rover’.
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? > Perdoret variabli name i instance ne nje shprehje echo. .
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? > Perdoret metoda bark() e objektit dog.
Perdorimi i Klases <? php require(‘dog. class. php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ? >
Nje dhe vetem nje shenje dollari $puppy->name = ‘Rover’; Gabimi me i zakonshem eshte qe te vendoset me shume se nje shenje dollari kur aksesohen variablat. $puppy->$name = ‘Rover’;
Perdorimi i atributeve brenda klases. . . • Nese ju nevojitet qe te perdorni variablat e klases brenda ndonje veprimi te klases, perdorni variablin special $this ne percaktimin e klases: class dog { public $name; public function bark() { echo $this->name. ‘ says Woof!’; } }
Metodat Konstruktor • Nje metode Konstruktor eshte nje funksion qe ekzekutohet automatikisht kur krijohet nje instance e klases per here te pare. • Nje konstruktor krijohet duke perfshire nje funksion me emrin __construct ne percaktimin e klases. • Mbani mend… Nese konstruktori kerkon argumente, ato duhet t’i kalohen kur krijohet instanca!
Shembull i Konstruktorit <? php class dog { Constructor function public $name; public function __construct($nametext) { $this->name = $nametext; } public function bark() { echo ‘Woof!’; } } ? >
Shembull i Konstruktorit <? php … $puppy = new dog(‘Rover’); … ? > Argumentet e konstruktorit kalohen gjate krijimit te nje objekti.
Fusha e veprimit te klases • Ashtu si funksionet, secili objekt instance ka fushen e tij te veprimit lokale Psh: Nese jane krijuar dy objekte dog $puppy 1 dhe $puppy 2, emrat e dy qeneve $puppy 1 ->name dhe $puppy 2 ->name jane teresisht te pavarur. . .
Trashegimia • Fuqia e vertete e perdorimit te klasave eshte veçoria e trashegimise – krijimi i nje hierarkie klasash te nderlidhura. dog Prind Bij poodle alsatian
Trashegimia • Klasat bij trashegojne te gjitha metodat dhe variablat e klases prind, dhe mund te shtojne edhe tjera te vetat. Psh: Klasa bij poodle trashegon variablin ‘name’ dhe metoden ‘bark’ nga klasa dog, dhe mund te shtojne edhe te tjera.
Shembull i Trashegimise (inheritance) The American Kennel Club (AKC) recognizes three sizes of poodle - Standard, Miniature, and Toy… class poodle extends dog { public $type; public function set_type($height) { if ($height<10) { $this->type = ‘Toy’; } elseif ($height>15) { $this->type = ‘Standard’; } else { $this->type = ‘Miniature’; } } }
Shembull i Trashegimise The American Kennel Club (AKC) recognizes three sizes of poodle - Standard, Miniature, and Toy… class poodle extends dog { public $type public function set_type($height) { if ($height<10) { $this->type = ‘Toy’; } elseif ($height>15) { $this->type = ‘Standard’; } else { $this->type = ‘Miniature’; } } } Vini re perdorimin e fjalesi kyçe extends per te treguar qe klasa poodle eshte nje bije e klases dog…
Shembull i Trashegimise … $puppy = new poodle(‘Oscar’); $puppy->set_type(12); // 12 inches high! echo “Poodle is called {$puppy->name}, ”; echo “of type {$puppy->type}, saying “; echo $puppy->bark(); …
Shembull i Trashegimise • Eshte e mundur qe te mbi-shkruhet nje metode e prindit me nje metode te re nese i jepet i njejti emer ne klasen bije te saj. class poodle extends dog { … public function bark() { echo ‘Yip!’; } … }
Konstruktoret e bijve? • Nese nje klase bije ka nje funksion konstruktor, ai ekzekutohet dhe cdo konstruktor i klases prind injorohet. • Nese nje klase bije nuk ka nje konstruktor, ekzekutohet konstruktori i klases prind te saj. • Nese as klasa bije e as klasa prind nuk ka konstruktor, ekzekutohet konstruktori i klases gjysh… • … etj.
Objektet brenda objekteve • Eshte e mundur qe te perfshihen objekte brenda nje objekti tjeter: … class dogtag { public $words; $puppy = new dog; $puppy->name = “Rover"; } class dog { public $name; public $tag; $poppy->tag = new dogtag; $poppy->tag->words = “blah”; … public function bark() { echo "Woof!n"; } }
Fshirja e objekteve • Deri tani objektet qe kemi krijuar nuk jane shkaterruar deri ne fund te skripteve tona… • Por, ashtu si me variablat, eshte e mundur qe te shkaterrohet nje objekt ne menyre eksplicite duke perdorur funksionin unset().
Objektet si argumente te funksioneve • Objektet mund te kalohen edhe si argumente per funksionet dhe aty ata mund t’i perdorin te gjithe methodat/variablat e tyre brenda funksionit. • Gjithsesi kujtoni qe, ashtu si funksionet objekti kopjohet kur kalohet si argument pervec rastit kur ju e specifikoni argumentin si variabel me reference &$variable
Perse Orientim me Objekte? Arsye 1 Kur ju e keni te qarte konceptin e objekteve, kodi i orientuar nga objektet, i emertuar ne menyre intuitive, behet i lehte per t’u kuptuar. PSh: $order->display_basket(); $user->card[2]->pay($order); $order->display_status();
Perse Orientim me Objekte? Arsye 2 Kodi ekzistues behet me i lehte per t’u mirembajtur. Psh: Nese ju deshironi qe te zgjeroni aftesite e nje pjese te kodit, ju thjesht mund te ndryshoni percaktimin e klases.
Perse Orientim me Objekte? Arsye 3 Kodi i ri mund te shkruhet me shpejt kur ju keni nje librari klasash te pershtatshme. Psh: Ju nevojitet nje objekt i ri…? Zakonisht mund te zgjeroni nje objekt ekzistues.
Per me teper informacion… • Ne kete leksion u paraqiten vetem elementet kryesore te OOP ne PHP. • Per me teper informacion klikoni: http: //www. php. net/manual/en/language. oop 5. php
Pyetje?
- Slides: 36