[SimpleXML] Paramètre de simple_xml_load_file()
Bonjour à tous,
Je me heurte à un petit problème que je ne comprend pas. Selon la documentation de SimpleXML, le fonction simple_xml_load_file() possède un paramètre facultatif "class_name" qui, si je le renseigne, me permet de récupérer un objet de la classe que je veux tant qu'elle étend SimpleXMLElement.
J'ai donc une classe PCXML qui étend SimpleXMLElement. Voici la signature de ma classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
class PCXML extends SimpleXMLElement
{
// Méthodes de la classe
public static function chargerFichier ($fichierXML)
{
return simple_xml_load_file($fichierXML, 'PCXML');
}
public function save ()
{
// Traitement qui me permet de sauvegarder dans un fichier
}
protected function debug ()
{
// Traitement qui me permet de laisser des traces
}
} |
J'utilise alors ce petit bout de code pour tester mon code :
Code:
1 2 3 4 5 6
|
include 'PCXML.php';
$xml = PCXML :: chargerFichier('test.xml');
var_dump($xml); |
Voila le résultat :
Code:
object(PCXML)#1 (1) { ["QA"]=> object(PCXML)#2 (2) { ["@attributes"]=> array(1) { ["id"]=> string(1) "1" } ["libelle"]=> object(PCXML)#3 (0) { } } }
Je me dit alors que tout va bien. Et malheureusement je me trompe. Lorsque j'essaye d'utiliser les méthodes debug() ou save() j'obtiens ce jolie message d'erreur :
Fatal error: Call to a member function debug() on a non-object in C:\wamp\www\************\PCXML.php on line 67
Déjà je ne comprend pas puisque que je récupère un objet de la bonne classe.
J'essaye alors de charger mon fichier XML à l'extérieur de ma classe :
Code:
1 2 3 4 5 6 7 8
|
include 'PCXML.php';
$xml = simple_xml_load_file('test.xml', 'PCXML');
var_dump($xml);
$xml->save('saveTest.xml'); |
Avec le var_dump(), je vois que je récupère encore un objet de la bonne classe mais j'obtiens toujours la même erreur lorsque j'utilise une méthode de la classe.
Je ne comprend pas du tout pourquoi et surtout, je ne vois plus l'intérêt de ce paramètre facultatif si ce n'est pas d'utiliser des méthodes de sa propre classe.
Un petit coup de main svp :D