Ik werk momenteel aan een plugin systeem.
In dit systeem heb ik een hoofd klasse "pluginmanager" en allerlei child klassen (die kan ik dus inladen).
Ik zal ff een stukje versimpelde code posten met wat ik precies bedoel.
Wat zend nu tegen me zegt op het punt dat ik vanuit bv klasse a een waarde wil registreren is dat er een NIEUWE instantie is aangemaakt van pluginmanager.
Dus op dat moment zijn er dus 2 instanties van pluginmanager terwijl dat altijd 1 zou moeten zijn.
Heeft iemand misschien een id hoe ik dit plobleem op kan lossen?
Of is wat ik wil niet mogelijk?
In dit systeem heb ik een hoofd klasse "pluginmanager" en allerlei child klassen (die kan ik dus inladen).
Ik zal ff een stukje versimpelde code posten met wat ik precies bedoel.
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
| class pluginmanager{ var plugin_array=array(); function register_value($waarde){ //waarde registreren } function load_new_plugin($plugin_name){ //maak nieuwe instantie aan $this->plugin_array[$plugin_name]=new $plugin_name; //laat plugin zichzelf alle waardes declareren $this->plugin_array[$plugin_name]->init_plugin($this); } } class plugin_a{ var $caller_class function init_plugin($my_caller){ $this->caller_class=$my_caller; // de child klasse moet dus zijn eigen waardes bekend maken aan pluginmanager // wanneer deze waarde voorkomt op de pagina dan zal pluginmanager deze plugin aanroepen $this->caller_class->register_value("bepaald_stuk_string"); $this->caller_class->register_value("nog_een_string"); } } class plugin_b{ var $caller_class function init_plugin($my_caller){ $this->caller_class=$my_caller; // de child klasse moet dus zijn eigen waardes bekend maken aan pluginmanager // wanneer deze waarde voorkomt op de pagina dan zal pluginmanager deze plugin aanroepen $this->caller_class->register_value("plugin_b"); } } // en nu de pluginmanager laden en daarna vertellen welke klassen geladen moeten worden. $plugins = new pluginmanager; $plugins->load_new_plugin("plugin_a"); $plugins->load_new_plugin("plugin_b"); |
Wat zend nu tegen me zegt op het punt dat ik vanuit bv klasse a een waarde wil registreren is dat er een NIEUWE instantie is aangemaakt van pluginmanager.
Dus op dat moment zijn er dus 2 instanties van pluginmanager terwijl dat altijd 1 zou moeten zijn.
Heeft iemand misschien een id hoe ik dit plobleem op kan lossen?
Of is wat ik wil niet mogelijk?
[ Voor 5% gewijzigd door Verwijderd op 11-01-2006 11:14 ]