Ik ben bezig met het bouwen van framework dat uit modules is opgebouwd, nu heb ik een xml formaat bedacht waar de gebruiker kan opgeven welke modules er kunnen worden gebruikt (incl. klassenaam, redirect e.d.). Hiervoor heb ik vervolgens een klasse gemaakt dit het parsen van die xml bestand regelt (die het later in een hashmap moet zetten e.d.) alleen nu maak ik gebruik van de volgende xml_parser wrapper: http://phpxmlclasses.sour...ss=class_path_parser.html
Als ik de bovenstaande wrapper gebruikt in me modules klasse krijg ik een scope probleem omdat ik dmv. van de set_handler functie een functie moet opgeven (event a-like) die tag gegevens afhandeld. Alleen deze functie (zie regel 25) blijkt niet te vallen in de scope van de klasse maar er buiten. Iemand enige idee hoe dit op te lossen valt?
Ik heb de volgende code tot nu toe:
Zoals je ziet valt de xml_module event methode voor de parser nu buiten de klasse maar dit wil ik niet! Zo kan ik overigens ook de hashmap vullen e.d.
Als ik de bovenstaande wrapper gebruikt in me modules klasse krijg ik een scope probleem omdat ik dmv. van de set_handler functie een functie moet opgeven (event a-like) die tag gegevens afhandeld. Alleen deze functie (zie regel 25) blijkt niet te vallen in de scope van de klasse maar er buiten. Iemand enige idee hoe dit op te lossen valt?
Ik heb de volgende code tot nu toe:
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
| require_once( GREENPULP_DOCROOT . "conf/greenpulp.constants.inc.php" ); require_once( GREENPULP_LIBRARY . "iflib.object.inc.php" ); require_once( GREENPULP_LIBRARY . "iflib.xml.inc.php" ); class modules extends Object { var $p_modules; var $p_reloadcount; var $p_xmlparser; var $p_conf_file; function modules( $conf_file = '' ) { $this->p_modules = array(); $this->p_reloadcount = 0; $this->p_conf_file = $conf_file; // initialize modules class... $this->init(); } function init() { $this->load(); } function load() { $this->p_xmlparser = new Xml(); $this->p_xmlparser->set_handler( "/greenpulp-config/module-mappings/module", 'xml_module' ); // // set the file name... if ( $this->p_conf_file != '' ) { // // start parsing of the configuration file... if ( !$this->p_xmlparser->parse_file( $this->p_conf_file ) ) { // error print "Error: " . $this->p_xmlparser->get_error(); } } $this->p_xmlparser = NULL; } function addModule ( $path, $forward, $name ) { print "Path=<code>{$path}</code>\n"; print "Path=<code>{$forward}</code>\n"; print "Path=<code>{$name}</code>\n"; } // // XML PARSER EVENT METHODS } function xml_module( $name, $attribs, $content ) { //$this->addModule( $attribs['path'], $attribs['forward'], $attribs['name'] ); } |
Zoals je ziet valt de xml_module event methode voor de parser nu buiten de klasse maar dit wil ik niet! Zo kan ik overigens ook de hashmap vullen e.d.
[ Voor 18% gewijzigd door alienfruit op 27-07-2003 00:21 ]