Na enig zoekwerk op GOT, kwam ik de modulaire opzet van graasgast tegen. Deze opzet gaat uit van een Core klasse en een aantal subklasses die via het core object met elkaar moeten kunnen communiceren. (zie ook dit topic: [rml][ PHP] Extenden van een class (onb. naam)[/rml])
De opzet van deze code ziet er ongeveer zo uit:
nu heb ik een aantal modules geschreven, en in principe zou ik in een module met $this->core->module_naam->functie_naam een functie uit een andere module moeten kunnen gebruiken. Ware het niet dat de constructor uit de module klasse volgens mij niet eens uitgevoerd wordt.
Een voorbeeld van mijn dummy module post ik hieronder:
waarom wordt de constructor-functie uit de klasse myModule niet behoorlijk uitgevoerd, en hoe krijg ik dan alsnog een reference naar mijn core object in de module?
De opzet van deze code ziet er ongeveer zo uit:
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
| class myModule { var $core; // Constructor function myModule($core) { # dit wordt niet uitgevoerd (waarom niet?) $this->core = &$core; } } /* Core class, intercommunication between the various modules */ class core { // Clasvars var $db; var $dummy; var $modules = array(); // Constructor function core() { error_reporting(E_ALL); $this->modules[] = 'moddummy.class.php'; $this->modules[] = 'moddb.class.php'; foreach ($this->modules as $value) { require_once($value); } $this->dummy = &new dummy($this); $this->db = &new db($this); } // mods_loaded() // returns an array with the modules currently loaded in the memory function mods_loaded() { return $this->modules; } } |
nu heb ik een aantal modules geschreven, en in principe zou ik in een module met $this->core->module_naam->functie_naam een functie uit een andere module moeten kunnen gebruiken. Ware het niet dat de constructor uit de module klasse volgens mij niet eens uitgevoerd wordt.
Een voorbeeld van mijn dummy module post ik hieronder:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <? class dummy extends myModule { var $testme; function dummy() { $this->testme = rand(1,10); echo 'mod_dummy is loaded!<br /> it\'s now up to moddb.class.php to read my secret value :) (should be: ' . $this->testme . ')<br />'; } function secretvalue() { return $this->testme; } } ?> |
waarom wordt de constructor-functie uit de klasse myModule niet behoorlijk uitgevoerd, en hoe krijg ik dan alsnog een reference naar mijn core object in de module?
[ Voor 28% gewijzigd door Helmet op 29-06-2004 21:31 ]
Icons are overrated