Final
Intro
Final vind ik wel een leuke. Want met Final mag je aangeven dat een functie, of zelfs de hele class als het ware 'klaar' is. Dat betekent in php in het geval van een functie dat de functie in de 'child' classes niet meer kan worden hergedefineerd, want dan krijg je een E_FATAL error. In het geval van een final class, kan de class geen 'child' classes meer hebben.
Praktijk
Voorbeeld
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
class Dier {
public $naam;
public $type;
function Dier($naam = 'Dier', $soort = 'Dier') {
$this->naam = $naam;
$this->type = $soort;
}
final function beweging($beweging) {
echo "Dier beweegt:";
newline();
echo "Beweging: ".$beweging;
newline();
}
function plassen() { //sorry, maar het een voorbeeld.. mmm?
echo "{$this->type} \"{$this->naam}\" plast";
newline(2);
}
}
class Hond extends Dier {
function Hond($naam = 'Luna', $soort = 'Hond') {
$this->Dier($naam, $soort);
}
function plassen() {
$this->beweging('Poot opheffen');
echo "{$this->type} \"{$this->naam}\" plast";
newline(2);
}
//dit gaat niet en geeft een E_FATAL:
/*
function beweging ($beweging) {
echo "Hond beweegt: {$beweging}";
newline();
}
*/
}
?>
class Dier {
public $naam;
public $type;
function Dier($naam = 'Dier', $soort = 'Dier') {
$this->naam = $naam;
$this->type = $soort;
}
final function beweging($beweging) {
echo "Dier beweegt:";
newline();
echo "Beweging: ".$beweging;
newline();
}
function plassen() { //sorry, maar het een voorbeeld.. mmm?
echo "{$this->type} \"{$this->naam}\" plast";
newline(2);
}
}
class Hond extends Dier {
function Hond($naam = 'Luna', $soort = 'Hond') {
$this->Dier($naam, $soort);
}
function plassen() {
$this->beweging('Poot opheffen');
echo "{$this->type} \"{$this->naam}\" plast";
newline(2);
}
//dit gaat niet en geeft een E_FATAL:
/*
function beweging ($beweging) {
echo "Hond beweegt: {$beweging}";
newline();
}
*/
}
?>
Dit gaat niet werken, want beweging is al Final:
Code (php)
Voorbeeld 2:
Dit gaat niet werken, omdat school al de final klasse is:
Code (php)
« vorige pagina | volgende pagina »
Inhoudsopgave
- Inleiding
- Autoload
- Con- & Destructors
- Scope (::)
- Static
- Constants
- Type Hinting
- Final
- Object iteration
- Exceptions
- Abstract
- Conclusie/Einde