1 / 16

Web-programmering

Web-programmering. Objektorientert programmering i PHP del 2. I dag. Litt mer avansert bruk av objektorientert PHP Gjennomgang av kode. Oppgaveløsning Ukeoppgaver. Oblig 1 leveres 6. mars. Objektorientert PHP forts. Omfang ( Scope ) på attributter og metoder Get , Set funksjoner Arv

adelle
Download Presentation

Web-programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web-programmering Objektorientert programmering i PHP del 2

  2. I dag • Litt mer avansert bruk av objektorientert PHP • Gjennomgang av kode. • Oppgaveløsning • Ukeoppgaver. • Oblig 1 leveres 6. mars

  3. Objektorientert PHP forts. • Omfang (Scope) på attributter og metoder • Get, Set funksjoner • Arv • Bruk av sessions

  4. Objekter og metoder/funksjoner <?php Class bil { public $tank; public $forbruk; function rekkevidde() { $rekkevidde = $this->tank/$this->forbruk; return $rekkevidde; } } $volvo = new bil(); $volvo->tank = 80; $volvo->forbruk = 0.7; $rekkeviddeImil = $volvo->rekkevidde(); echo "Rekkevidden til bilen er "; echonumber_format($rekkeviddeImil,0)." mil"; ?> Rekkevidden til bilen er 114 mil

  5. Omfang (scope) på attributter • Public (åpen utenfor klassen) • Private (kan bare brukes inne i klassen) • Protected (brukes inne i klassen og arvede klasser) • Const (konstant) • Var (samme som public)

  6. Eksempel på omfang av variabler <?php Class bil { public $tank; private $forbruk; var $antallHK; const $antallHjul = 4; } $volvo = new bil(); $volvo->tank = 80; $volvo->forbruk = 0.7; // dette går ikke! $volvo->antallHK = 230; echo $volvo->antallHjul; ?> Vil resultere i en ”fatal” error når det kjøres

  7. Omfang av metoder (functions) • Public (åpen utenfor klassen) • Private (kan bare brukes inne i klassen) • Protected (brukes inne i klassen og arvede klasser) • Ikke noe før function = public

  8. Eksempel, omfang metoder <?php Class bil { public $tank; public $forbruk; private function beregn() { $rekkevidde = $this->tank/$this->forbruk; return $rekkevidde; } publicfunction rekkevidde() { $res=this->beregn(); return $res; } } $volvo = new bil(); $volvo->tank = 80; $volvo->forbruk = 0.7; echo $volvo->rekkevidde(); echo $volvo->beregn(); ?> Vil resultere i en ”fatal” error når det kjøres

  9. Bruk av private attributter • Bruk Privat for alle attributter i klasser • Skriv så egne metoder for å operere på disse • Eks: • Private $navn • Public Functionset_navn($navn) • Public Functionget_navn();

  10. Eksempel, get, set <?php Class bil { private $tank; publicfunctionset_tank($innTank) { $this->tank = $innTank; } publicfunctionget_tank() { return$this->tank; } } $volvo = new bil(); $volvo->set_tank(80); echo$volvo->get_tank; ?> • Dette for å sikre at all manipulasjon av variabelen tank skjer via metoder. • Kan utvide disse

  11. Eksempel, get, set, utvidelse <?php Class bil { private $tank; publicfunctionset_tank($innTank) { if($innTank>0) { $this->tank = $innTank; } } publicfunctionget_tank() { return $this->tank; } } $volvo = new bil(); $volvo->set_tank(80); echo $volvo->get_tank; ?> • Nå kan det bare settes inn lovlige verdier • En tank kan ikke inneholde et negativt tankvolum.

  12. Arv • Kan definere en klasse som arver egenskaper (metoder og attributter) fra en annen klasse. • Eksempel: • En klasse bil • En klasse lastebil som arver egenskapene til bil-klassen (extends) • Lastebil-klassen kan ha egne egenskaper og benytte egenskapene til bil-klassen.

  13. <?php class lastebil extends bil{ private $lasteKapasitet; publicfunctionset_lasteKapasitet($last) { $this->lasteKapasitet=$last; } } class bil { private $tank; publicfunctionset_tank($tank) { $this->tank=$tank; } publicfunctionget_tank($tank) { return $this->tank; } } $volvo = new lastebil(); $volvo->set_tank(70); $volvo->set_lasteKapasitet(1000); ?> Eksempel, arv Lastebil Bil $tank $lastekapasitet set_tank($tank) get_tank($tank) set_lastekapasitet($last)

  14. <?php class lastebil extends bil{ private $lasteKapasitet; public function __construct($last,$tank) { parent:: __construct($tank); $this->lasteKapasitet=$last; } public functionget_lasteKapasitet() { return $this->lasteKapasitet; } } class bil { private $tank; public function __construct($tank) { $this->tank=$tank; } public functionget_tank() { return $this->tank; } } $volvo = new lastebil(1000,70); echo "Tanken er ".$volvo->get_tank(); ?> Eksempel, arv, bruk av constructor

  15. Statiske metoder (som i Java) classfilhandterer { // håndterer all filskriving staticfunctionskriv_fil($tekst) { $filref=fopen("kjoretoy.txt","a"); $ok = fwrite($filref,$tekst); } } // kall til denne klassen/metoden: filhandterer::skriv_fil($stringTilFil); • Brukes der det ikke er hensiktsmessig å opprette objekter • Generelle klasser/metoder • Kanskje litt overkill da man bare kan bruke en funksjon.

  16. Sessions og objekter • Kan legge objekter inn i sessionvariable • Husk å ha alle klasse definisjonene i alle filene som bruker objektene i sessionene. • Samle gjerne alle klassene i en fil og inkluder den i alle de andre • Noen mer komplekse strukturer fungerer ikke som sessionsvariable • Bla. referanser til objekter.

More Related