Osnovni koncepti OOP
Objektno orientirano programiranje
PHP in OOP – primer razreda
<?php
class Oseba {
private $ime = ''; // privzeta vrednost
function setIme($ime) {
$this->ime = $ime;
}
function getIme() {
return $this->ime;
}
}
?>
PHP in OOP – primer objektov / instanc
<?php
//npr. da je razred definiran v drugi datoteki
require_once('razred/Oseba.php');
$jure = new Oseba(); //izdelamo objekt
$jure->setIme('Jure');
$nina = new Oseba(); //izdelamo objekt
$nina->setIme('Nina');
echo $jure->getIme() . "<br />{$nina->getIme()}";
echo $nina->ime . '<br />' . $jure->ime; //napaka, ni dovoljeno
?>
Jure
Nina
Fatal error: Cannot access private property Oseba::$ime in E:\Dev\dLib\dkum\test.php on line 45
PHP in OOP – dodatni konstrukti
PHP in OOP – primer razreda II
<?php
class Oseba {
private $ime;
function __construct() {
echo "Konstruktor klican!<br />";
$this->ime = "Nedefinirano<br />";
}
function __destruct() {
echo "Destruktor klican!<br />";
}
function setIme($ime) { $this->ime = $ime; }
function getIme() { return $this->ime; }
};
$ime = new Oseba();
echo $ime->getIme();
$ime = NULL; // kliče destruktor, isto se zgodi pri unset()
?>
Konstruktor klican!
Nedefinirano
Destruktor klican!
PHP in OOP – dedovanje
PHP in OOP – primer dedovanja
<?php
class Oseba {
protected $ime; // protected!
function setIme($ime) { $this->ime = $ime; }
function getIme() { return $this->ime; }
};
class Student extends Oseba {
public $fakulteta; // ker je lastnost public, lahko do nje dostopamo kjerkoli!
function izpis() { echo $this->fakulteta . " " . $this->ime . "<br />"; }
};
$jure = new Student();
$jure->setIme("Jure");
$jure->fakulteta = "FERI";
$nina = new Student();
$nina->setIme("Nina");
$nina->fakulteta = "EPF";
$jure->izpis();
$nina->izpis();
?>
FERI Jure
EPF Nina
PHP in OOP – primer dedovanja II
<?php
class Oseba {
private $ime; // tokrat private!
function __construct($ime) { $this->ime = $ime; } //konstruktor
function setIme($ime) { $this->ime = $ime; }
function getIme() { return $this->ime; }
};
class Student extends Oseba {
public $fakulteta; // ker je lastnost public, lahko do nje dostopamo kjerkoli!
function __construct($ime,$faks) {
parent::__construct($ime);
$this->fakulteta = $faks;
}
function izpis() { echo $this->fakulteta . " " . $this->getIme() . "<br />"; }
};
$jure = new Student('Jure', 'FERI');
$nina = new Student('Nina', 'EPF');
$jure->izpis();
$nina->izpis();
?>
FERI Jure
EPF Nina