Bonjour à tous...
Voilà, je m'adresse à vous... car la je comprends pas mon erreur...
Conf: Php 5.2.0
J'ai une classe de chargement de modules qui doit parser un fichier xml lors de la construction, qui me retourne une erreur simpleXml...
le fichier xml modules.xml
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version='1.0' encoding="UTF-8" ?> <modules> <module name="SystemCore" status="1" src="./class/SystemCore.php" /> <module name="log" status="1" src="./class/log.php" /> <module name="mysql" status="1" src="./class/mysql.php" /> <module name="test" status="1" src="./class/class.test.php" /> </modules>
Le constructeur en question: awaeCore.php
Lors de l'appel... j'ai un Fatal error:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 protected function __construct() { $classname = strtolower(get_class($this)); // Si la classe a déja été instancié, pas la peine de refaire une recherche. if ( !isset(self::$_module[$classname]) ) { // On charge le fichier de conf. self::$_xml = simplexml_load_file($this->FileConf); // On regarde si le module existe dans le fichier modules.xml. $var = self::$_xml->xpath('//module[@name="'.$classname.'"]'); // Si c'est pas le cas ==> erreur if ( $var === FALSE ) throw new Exception('Module '.$classname.' introuvable dans le fichier de configuration'); // On recherche la chaine XML du module. $mod = simplexml_load_string($var[0]->asXml()); // On vérifie son status. if ( (int) $mod['status'] === 0 ) { throw new Exception('Module '.$classname.' ne peut être chargé : Status = 0'); } elseif ( (int) $mod['status'] === 2 ) { $this->debug = TRUE; } }
la ligne 29:Call to a member function asXml() on a non-object in /Applications/MAMP/www/masociete.local/awae-r1/awaeCore.php on line 29...
Si je comprends bien... il me dit que $var[0] n'est pas un objet simplexml... pourtant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part $mod = simplexml_load_string($var[0]->asXml());
un print_r de $var[0]:
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SimpleXMLElement Object ( [@attributes] => Array ( [name] => test [status] => 1 [src] => ./class/class.test.php ) )
Voila... au secours, là je suis vraiment désespéré... cherché partout... déjà passé quelques heures sur le problème... éclairé moi de vos lanternes...![]()
Manu
Partager