Dingen om rekening mee te houden
Let op dat als een publieke waarde met dezelfde naam in het object gedefinieerd is, dat deze niet meer langs de overload-functies komt!
[voorbeeld 4]
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class Voorbeeld4 extends Voorbeeld {
public $waardeX = 'All your base are belong to us!';
public function __construct()
{
//roep Voorbeeld::__construct() aan.
parent::__construct();
}
}
$object = new Voorbeeld4();
echo $object->waardeX;
/*
* waneer hij de overload-method zou pakken,
* zou hij 'bestaat niet!' geven. Hij geeft
* echter 'All your base are belong to us!',
* en er zal ook geen debug-regeltje verschijnen.
*/
?>
class Voorbeeld4 extends Voorbeeld {
public $waardeX = 'All your base are belong to us!';
public function __construct()
{
//roep Voorbeeld::__construct() aan.
parent::__construct();
}
}
$object = new Voorbeeld4();
echo $object->waardeX;
/*
* waneer hij de overload-method zou pakken,
* zou hij 'bestaat niet!' geven. Hij geeft
* echter 'All your base are belong to us!',
* en er zal ook geen debug-regeltje verschijnen.
*/
?>
Ook werkt overloading niet waneer je statisch de variabelen opvraagt. Later bij __call() zullen we zien dat dat ook hierbij het geval is.
[voorbeeld 5]
Code (php)
1
2
3
4
5
2
3
4
5
<?php
error_reporting(E_ALL);
echo Voorbeeld::$iets;
//dit zal een melding opleveren.
?>
error_reporting(E_ALL);
echo Voorbeeld::$iets;
//dit zal een melding opleveren.
?>
Uiteraard werkt overloading ook niet intern in de klasse, anders zou bij __set() deze functie zichzelf altijd aanroepen, en zo in een lus terecht komen.
overload-methods moeten net als __construct & __destruct de vlaggen 'public' en niet 'static' meekrijgen.
« vorige pagina | volgende pagina »
Inhoudsopgave
- Het verschil
- __get()
- __set()
- __isset() & __unset()
- __call()
- Dingen om rekening mee te houden
- Mogelijke toepassing