In een functie heb ik een handle naar het object nodig dat de functie aanroept. m.a.w.: Als functie a uit object functie b uit object b aanroept wil ik in functie b een link hebben naar object a. Zonder dat expliciet mee te geven.
Ik maak nu gebruik van debug_backtrace(). Dit werkt goed, maar het lijkt me niet de meest ideale manier, aangezien het toch eigenlijk een debug functie is. De code die ik nu heb:
Ik heb overal gezocht, maar ik kan geen nette manier vinden om dit op te lossen. Weet iemand hoe ik dit op een degelijke manier kan aanpakken? Het gaat dus, voor de duidelijkheid, op de $caller variabele in de functies registerGetter en registerSetter
Ik maak nu gebruik van debug_backtrace(). Dit werkt goed, maar het lijkt me niet de meest ideale manier, aangezien het toch eigenlijk een debug functie is. De code die ik nu heb:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| <?php abstract class BaseComponent { private $getters = array(); private $setters = array(); public function __get($name) { if (isset($this->getters[$name])) { $class = $this->getters[$name][0]; $function = $this->getters[$name][1]; return $class->$function(); } } public function __set($name, $value) { if (isset($this->setters[$name])) { $class = $this->setters[$name][0]; $function = $this->setters[$name][1]; $class->$function($value); } } public function __isset($name) { return isset($this->getters[$name]); } protected function registerGetter($name, $function) { $trace = debug_backtrace(); $caller = $trace[1]['object']; $function = array($caller, $function); if (is_callable($function)) { $this->getters[$name] = $function; return true; } else { return false; } } protected function registerSetter($name, $function) { $trace = debug_backtrace(); $caller = $trace[1]['object']; $function = array($caller, $function); if (is_callable($function)) { $this->setters[$name] = $function; return true; } else { return false; } } } ?> |
Ik heb overal gezocht, maar ik kan geen nette manier vinden om dit op te lossen. Weet iemand hoe ik dit op een degelijke manier kan aanpakken? Het gaat dus, voor de duidelijkheid, op de $caller variabele in de functies registerGetter en registerSetter
Ik ontken het bestaan van IE.