Public, protected, private
Public
Public is niets anders als publiek. Een public variable
kan je overal en altijd zien in een class.
Als je van een class variable of functie niet defineerd of hij public etc. is,
dan wordt ie als public beschouwd.
Code (php)
Dit zal werken zoals verwacht en zal
Hallow
Hallow printen.
Private
Private variablen en functies kan je niet buiten de class gebruiken. Alleen in de class zelf, of in de class die de huidige extends.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class mijn_public {
private $vari = 'Hallow';
private function printvari() {
echo $this->vari;
newline(1);
}
public function printhallo() {
$this->printvari();
}
}
$obj = new mijn_public;
//$obj->printvari(); //zal niet werken: Fatal error: Call to private method mijn_public::printvari() from context '' in H:\Server\Apache2\htdocs\class\class.php on line 42
$obj->printhallo(); //dit werkt zoals verwacht en zal "Hallow" printen
?>
class mijn_public {
private $vari = 'Hallow';
private function printvari() {
echo $this->vari;
newline(1);
}
public function printhallo() {
$this->printvari();
}
}
$obj = new mijn_public;
//$obj->printvari(); //zal niet werken: Fatal error: Call to private method mijn_public::printvari() from context '' in H:\Server\Apache2\htdocs\class\class.php on line 42
$obj->printhallo(); //dit werkt zoals verwacht en zal "Hallow" printen
?>
Protected
Protected is eigenlijk de meest "egoistische" vorm. Protected variablen en functies kunnen alleen gebruikt worden de class die ze gedefineerd heeft.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class mijn_public {
protected $vari = 'Hallow';
protected function printvari() {
echo $this->vari;
newline(1);
}
public function printhallo() {
$this->printvari();
}
}
class mijn_tweede {
protected $var2 = 'XXXX';
protected function tsja() {
//$this->printvari(); //zal niet werken en resulteren in een fatal error
}
}
?>
class mijn_public {
protected $vari = 'Hallow';
protected function printvari() {
echo $this->vari;
newline(1);
}
public function printhallo() {
$this->printvari();
}
}
class mijn_tweede {
protected $var2 = 'XXXX';
protected function tsja() {
//$this->printvari(); //zal niet werken en resulteren in een fatal error
}
}
?>
Extending
Bedenk wel dat dit altijd nog mogelijk is. Ondanks je protected ofzoiets hebt gegeven. Dus wil je dat niet, gebruik dan het Final keyword!