Professional Documents
Culture Documents
Osnove OOP
Osnove OOP
Osnove OOP
i komunikacione tehnologije
<?php
class Osoba
{
// primer klase
}
?>
Kreiranje objekta
{
// primer klase
}
Kreiranje objekta klase Osoba
▪ Funkcija mora imati svoje ime, a može imati i jedan ili više
parametara.
function pozdrav() {
echo "Zdravo. Ja sam Pera!";
}
} Pozivanje funkcije
pozdrav()
$objekat = new Osoba;
$objekat->pozdrav();
?>
Primer funkcije sa parametrima
<?php
class Osoba
{ Funkcija koja prihvata
jedan parametar
// primer klase
public $ime = "Pera";
function pozdrav($prezime) {
echo "Zdravo. Ja sam Pera ".$prezime."!";
}
}
function pozdrav($prezime) {
return "Zdravo. Ja sam Pera ".$prezime."!";
}
Kako funkcija vraća vrednost, dobijeni
} rezultat treba ispisati sa echo
function pozdrav($prezime){
$this->imePrezime = $this->ime . " " . $prezime;
return "Zdravo. Ja sam ". $this->imePrezime;
}
}
Dohvatanje vrednosti svojstva
imePrezime tekućeg objekta
$objekat = new Osoba;
echo $objekat->pozdrav("Peric");
?>
Primer
<?php
class Osoba
{
public $ime = "Pera";
private $zanimanje = "Student";
$objekat->setZanimanje("Programer");
echo $objekat->getZanimanje();
?>
Statičke promenljive i metode
echo Krug::$pi;
echo Krug::vrati();
?>
Konstruktori
▪ Konstruktorom se pravi novi objekat
class Osoba
{
function Osoba($a)
{
echo(“Realizovan konstruktor sa parametrom $a!”);
}
}
Konstruktori
unset($prvi_objekat);
$prvi_objekat->ispis(); //greska
Nasleđivanje
▪ Nasleđivanje klasa se definiše rezervisanom rečju extends.
▪ U klasi koja nasleđuje, dostupna su sva svojstva i metode iz natklase,
koje nisu private.
▪ Ukoliko je klasa Zaposleni nasledila klasu Osoba, tada se označava
kao:
class Zaposleni extends Osoba
{
public $plata;
function opis($vrednost) {
$this->plata = $vrednost;
echo this->plata;$
}
}
Primer – nasleđivanje
<?php class Zaposleni extends Osoba
class Osoba { {
public $ime; public $plata;
▪ Pored ovog načina, postoji i kraći način pisanja kojim se postiže isti
efekat sa nadklasom.
parent::setIme($ime);
Primer – override izvedene klase
class Osoba {
protected $ime;
public function setIme($ime){
$this->ime = $ime;
} Testiranje rezultata:
public function getIme(){ $zaposleni = new Zaposleni();
return $this->ime; $zaposleni->setIme("Pera");
} echo $zaposleni->getIme();
}
▪ Kod klase treba stavili u poseban php fajl koji možemo nazvati
class_lib.php i uključiti ga u stranicu index.php, u head sekciju,
pomoću
<?php
class Klasa_A{
public $podatak;
public function ispis(){
echo ($this->podatak . "<br/>");
}
}
?>
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" /><title>OOP PHP</title>
<?php include("class_lib.php"); ?>
</head><body>
<?php
// Kreiranje objekta kao instance Klasa_A
$objekat = new Klasa_A();
▪ http://php.net/manual/en/language.oop5.magic.php
Magic Methodi
➢ __construct()
➢ __destruct()
➢ __clone()
➢ __toString()
➢ __get()
➢ __set()
➢ __isset()
➢ __unset()
Magic Methodi
➢ __sleep()
➢ __wakeup()
➢ __invoke()
➢ __call()
➢ __callStatic()
➢ __set_state()
➢ __debugInfo()
__construct()
▪ Kreiranje konstruktora kao funkcije sa imenom klase
function ImeKlase() { … }
predstavlja stariji način i od PHP verzije 5.3.3 se smatra regularnom
funkcijom.
▪ U PHP 7.0 ova sintaksa je “deprecated” i u budućnosti će biti
potpuno izbačena iz upotrebe.
▪ Nova notacija pisanja konstruktora klase, jeste korišćenje magic
metode
__construct()
__construct()
▪ Konstruktori roditelja, tj. natklase, se ne pozivaju implicitno
ukoliko izvedena klasa ima definisan konstruktor.
parent::__construct()
protected $plata;
▪ Na primer:
echo $objekat;
protected $plata;