__get()
Precies bijhouden welke variabelen er worden opgevraagd? Definieer een method genaamd __get($key). Als argument ($key) krijgt deze de naam van de variabele die je uit wilt lezen.
Waar je vervolgens de waarde vandaan halt mag je helemaal zelf weten! Dit kan dus een array zijn, $this->waarden[$key], of een echt bestaande variabele van het object, $this->$key, of zelfs databaseuitvoer!
Uiteraard geef je de waarde vervolgens terug via return.
[voorbeeld 1]
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
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
<?php
class Voorbeeld {
/*
* deze variabele mogen we niet van buitenaf,
* berijken maar wel via klassen die
* voortborduren op dit voorbeeld
*/
protected $waarden = array();
public function __construct()
{
$this->waarden['iets'] = 'aap';
}
public function __get($key)
{
echo "debug: variabele '$key' werd opgevraagd\n";
return isset($this->waarden[$key]) ? $this->waarden[$key] : 'bestaat niet!';
}
}
$object = new Voorbeeld();
echo $object->iets;
//geeft 'aap'
echo $object->fictieveVariabele;
//geeft 'bestaat niet!'
?>
class Voorbeeld {
/*
* deze variabele mogen we niet van buitenaf,
* berijken maar wel via klassen die
* voortborduren op dit voorbeeld
*/
protected $waarden = array();
public function __construct()
{
$this->waarden['iets'] = 'aap';
}
public function __get($key)
{
echo "debug: variabele '$key' werd opgevraagd\n";
return isset($this->waarden[$key]) ? $this->waarden[$key] : 'bestaat niet!';
}
}
$object = new Voorbeeld();
echo $object->iets;
//geeft 'aap'
echo $object->fictieveVariabele;
//geeft 'bestaat niet!'
?>
Wat je ook meteen kunt zien in [voorbeeld 1] is dat je ook zelf kan bepalen wat je terug geeft waneer de variabele niet bestaat. Soms is het nuttig om in plaats van een foutmelding een lege array terug te geven, of juist meteen een fatal error. Dat is puur afhankelijk van de functie van de klasse.
« vorige pagina | volgende pagina »
Inhoudsopgave
- Het verschil
- __get()
- __set()
- __isset() & __unset()
- __call()
- Dingen om rekening mee te houden
- Mogelijke toepassing