__call()
__call() is in feite hetzelfde als __get(), maar dan voor het aanroepen van functies. __call($methodName, $arguments) krijgt 2 argumenten mee. De naam van de method die je aanroept, en een array met argumenten die je bij je aanroep hebt meegegeven. De uitvoer van de functie geef je terug via return.
[voorbeeld 6]
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
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
<?php
class Voorbeeld6 {
public function __call($methodName, $arguments)
{
echo "Ik vraag $method aan met deze argumenten:";
print_r($arguments);
return 'Ik ben nep!';
}
public function ikBestaWel()
{
return 'Zie je wel!';
}
}
$object = new Voorbeeld6();
echo $object->blablaNepMethod('schaap', 'boer', 'pinuing');
/*
* geeft 'Ik vraag blablaNepMethod aan met deze argumenten:
* Array (
* [0] => 'schaap',
* [1] => 'boer',
* [2] => 'pinuing'
* )
* Ik ben nep (return-waarde immers)
*/
echo $object->ikBestaWel();
/*
* zal 'zie je wel!' geven, en geen 'Ik vraag ...', het is een
* public functie dus zal niet langs __call() gaan.
*/
Voorbeeld6::blablaNepMethod('iets');
/*
* zal een error opleveren, want static wordt overloading niet gebruikt.
* Meer hierover op de volgende pagina.
*/
?>
class Voorbeeld6 {
public function __call($methodName, $arguments)
{
echo "Ik vraag $method aan met deze argumenten:";
print_r($arguments);
return 'Ik ben nep!';
}
public function ikBestaWel()
{
return 'Zie je wel!';
}
}
$object = new Voorbeeld6();
echo $object->blablaNepMethod('schaap', 'boer', 'pinuing');
/*
* geeft 'Ik vraag blablaNepMethod aan met deze argumenten:
* Array (
* [0] => 'schaap',
* [1] => 'boer',
* [2] => 'pinuing'
* )
* Ik ben nep (return-waarde immers)
*/
echo $object->ikBestaWel();
/*
* zal 'zie je wel!' geven, en geen 'Ik vraag ...', het is een
* public functie dus zal niet langs __call() gaan.
*/
Voorbeeld6::blablaNepMethod('iets');
/*
* zal een error opleveren, want static wordt overloading niet gebruikt.
* Meer hierover op de volgende pagina.
*/
?>
« vorige pagina | volgende pagina »
Inhoudsopgave
- Het verschil
- __get()
- __set()
- __isset() & __unset()
- __call()
- Dingen om rekening mee te houden
- Mogelijke toepassing