Avgust22
Koriste se za definisanje objekta ? klasa je samo sablon na osnovu koga se kreiraju objekti. Na osnovu jedne definicije klase moguce je kreirati vise objekata. Novi objekat se kreira upotrebom kljucne rijeci new na sledeci nacin:
<ime_varijable > = new <ime_klase>(<lista_varijabli>)
<lista_varijabli> - varijable koje se predaju konstruktoru
NPR: $obj = new my_class();
class <ime_klase>
{
<varijable>
<konstruktor klase>
<funkcije>
}
<varijable> - lista varijabli koje ce biti koristene unutar klase
<konstruktor klase> - funkcija istog imena kao i klasa koja se poziva kada se kreira nova instanca klase
<funkcije> - funkcije klase
4.1 Varijable
class c_test
{
//test varijable
var $a;
var $b;
}
$a = new c_test(); // kreiranje objekta "a" na osnovu klase "c_test"
$b = new c_test(); // kreiranje objekta "b" na osnovu klase "c_test"
Ovde su $b i $a objekti ili instance klase c_test. Prustup varijablama se vrsi kao:
$a->a = "varijabla a"
$a->b = "varijabla b"
echo $b->a; //izlaz je "", zato sto varijable objekta b jos nisu primile //nikakvu vrijednost i zato sto nemaju nikakve veza sa objektom a.
echo "ja sam " . $a->a ; //izlaz je "ja sam varijabla a"
echo "a ja " . $a->b ; //izlaz je "a je varijabla b"
Operator "->" - koristi se za pristup clanovima klase.
4.2 Funkcije
class c_test
{
//test varijable
var $a;
var $b;
function zbir() { return $this->a + $this->b; }
function produkt() { return $this->a*$this->b; }
function razlika() { return $this->a-$this->b; }
function kolicnik() {
if ($this->b != 0){
return $this->a/$this->b;
}else{
return "nije definisano" ;
}
function pozovi_zbir(){
//primjer pozivanja funkcije
return ($this->zbir());
}
}
$this - isto kao $a->a za pristup varijabli a u objektu a, $this->ime_varijable koristi se za pristup varijabli koja je definisana u klasi, za varjable u oblasti funkcije ne treba koristiti $this.
$obj = new c_test();
$obj->a = 15;
$obj->b = 20;
echo $obj->zbir(); // izalz je 35
echo $obj->produkt(); // itd.
echo $obj->razlika; //ne radi zato sto nema "()" iza funkcije;
4.3 Konstruktori klase
Konstruktor klase je funkcija koja se poziva prilikom kreiranja nove klase. Funkcija je konstruktor ako ima isto ime kao i klasa.
class test {
function test() { echo "testing..."; }
}
$x = new test(); //
$y = new test(); // ) ? svaki put se poziva funkcija test() klase test
$z = new test(); // /
class osoba{
var $ime;
var $prezime;
function osoba ($ime ="", $prezime="") //konstruktor
{
$this->ime = $ime;
$this->prezime= $prezime;
}
}
$x = new osoba("abc","xyz"); //ovi argumenti su predati funkciji "osoba"
$y = new osoba(); //argumenti su izostavljeni pa se koriste podrazumijevane vrijednosti
echo $x->ime . "
"; //abc
echo $x->prezime; //xyz
4.4 Nasle?ivanje
class <nova_klasa> extends <osnovna_klasa>
{
}
Ovako definisana klasa nasledjuje sve osobine osnovne klase. Sve funkcije koje je imala osnovna klasa bice dostupne u novoj klasi. Ako nova klasa nema konstruktora koristi se konstruktor osnovne klase ukoliko postoji.
NPR:
class a{
function aa(){ echo "ovo je funkcija aa klase a
"; }
}
class b extends a{
function bb(){ echo '"ovo je funkcija bb klase b
"; }
}
Klasa b je naslijednila sve osobine klase a, klasa a sadrzi funkciju aa, a klasa b sadrzi funkciju aa i bb.
$x = new b();
$b->aa();
$b->bb();
Izlaz:
ovo je funkcija aa klase a
ovo je funkcija bb klase b