Professional Documents
Culture Documents
Uvod u OO PHP
Izradio: Davor Cihlar
Uredili: Goran uri; Savjetovali: deosi
19/03/2012 2/35
Plan
to emo nauiti
Razrede
Metode
Instance
!onstante
$arone metode
19/03/2012 3/35
!to je OOP
"rirodnije za ovje&a
-tru&tura razreda
"odaci
Varijale i &onstante
"ona,anje
typedef struct {
char ime[64], prezime[64];
int naRacunu;
} Kupac; // opisnik kupca
typedef struct {
int cijena;
} Artikl; // opisnik artikla
typedef struct {
Artikl artikli[128];
int nArtikala;
Kupac *kupac;
} Kosarica; // opisnik kosarice
19/03/2012 6/35
#rzi uvod u OOP $'&
int izracunajCijenuKosarice(
Kosarica *kosarica);
Kosarica a;
... // ispuna kosarice
printf("Cijena kosarice A: %d\n",
izracunajCijenuKosarice(&a));
19/03/2012 8/35
#rzi uvod u OOP $(&
Kosarica a, b; // instanciranje
... // ispuna koarica a i b
printf("Cijena kosarice A: %d\n",
a.ukupnaCijena());
printf("Cijena kosarice B: %d\n",
b.ukupnaCijena());
class Kupac {
var $ime, $prezime;
var $naRacunu;
function plati($iznos) {
if ($this->naRacunu < $iznos)
return false;
$this->naRacunu -= $iznos;
return true;
}
}
19/03/2012 12/35
#rzi uvod u OOP $-&
class Kosarica {
var $artikli = array();
var $kupac;
function ukupnaCijena() {
$sum = 0;
foreach ($this->artikli as &$a)
$sum += $a->cijena;
return $sum;
}
function dodajArtikl($a) { $this->artikli[] = $a; }
function prodaj() {
if ($this->kupac->plati($this->ukupnaCijena()))
echo "Kupac je sretno platio! :)\n";
else
echo "Kupac nema para! :(\n";
}
}
19/03/2012 13/35
.adatak $%& / na0avka1php
;e>inicija5
class Razred {
}
Instanciranje5
$a = new Razred();
$b = $a; // $b je referenca na $a!
$a = new Razred();
$b = clone $a;
$a = new Artikl();
$kosarica->dodajArtikl(clone $a);
19/03/2012 1:/35
Pristup varija0laa i etodaa
class Razred {
var $a;
}
$x = new Razred();
$x->a = 4;
var_dump($x);
19/03/2012 19/35
3idljivost
public B #odrazumijevano
(e #re#orua se &ori,tenje@
class Razred {
var $a; // podrazumijeva se public
public $b;
private $c;
protected $d;
}
19/03/2012 20/35
Po4etna vrijednost varija0le
"rimjer5
class Razred {
public $a = 42;
}
$x = new Razred();
$x->a = 4;
$y = new Razred();
var_dump($x); // a = 4
var_dump($y); // a = 42 (nepromijenjen)
19/03/2012 21/35
5aknadne varija0le
"rimjer5
class Razred {
}
$x = new Razred();
$x->a = 4;
var_dump($x);
19/03/2012 22/35
6onstante
"ristu# o#eratorom ::
"rimjer5
class Razred {
const konstanta = 'vrijednost';
}
echo Razred::konstanta, "\n";
19/03/2012 23/35
7etode $%&
"rimjer5
class Razred {
public function javna() {
echo "Ovdje sam!\n";
}
private function privatna() {
echo "Ne dam se!\n";
}
}
$x = new Razred();
$x->javna();
$x->privatna(); // greska!
19/03/2012 25/35
8this $%&
"rimjer 15
class Razred {
private $priv;
private function brisi() {
$this->priv = 0; // varijabla instance
}
public function napraviNesto() {
$a = 42; // lokalna varijabla
$this->brisi(); // poziv na funkciju instance
gotov(); // poziv na globalnu funkciju
}
}
19/03/2012 28/35
8this $(&
"rimjer 25
class Razred {
private $priv = 42;
public function postavi($a) {
$this->priv = $a;
}
}
$x = new Razred();
$x->postavi(4);
$y = new Razred();
var_dump($x);
var_dump($y);
19/03/2012 2:/35
Pristup varija0laa preko etoda
"re#oruena #ra&sa
"rimjer5
__construct B &onstru&tor
__destruct B destru&tor
111
?tt#5//HHH1#?#1net/manual/en/lan'ua'e1oo#51ma'ic1#?#
19/03/2012 30/35
6onstruktor
"rimjer5
class Cijena {
private $iznos, $valuta = 'kn';
public function __construct($iznos)
{ $this->iznos = $iznos; }
public function __toString() {
return sprintf("%.4f$this->valuta",
$this->iznos);
}
}
$racun = new Cijena(42);
echo $racun, "\n";
19/03/2012 33/35
Stati4ke etode i varija0le
"ristu#a im se o#eratorom ::
"rimjer5
class Razred {
static $staticna;
static function stvori() {
return new Razred();
}
}
$x = Razred::stvori();
var_dump($x);
var_dump(Razred::$staticna);
19/03/2012 30/35
.adatak $'& / kartas1php
Karta
Jaina mo.e iti5 282+ 2:2+ 292+ 2102+ 2;e&o2+ 2;ama2+ 2!ralj2+ 2Cs2
Spil