Salut,
Je souhaite me servir du DOM par l'intermédiaire d'une classe personnelle.
Seulement je ne désire absolument pas mettre mes attributs en public, et cela me pose problème, car je ne sais pas de quel manière résoudre le passage de l'objet.
Un exemple de classe :
Donc dans ce code, $truc = $page->ajoutNoeud('truc'); fonctionne normal, mais si je veux rajouter un noeud à $truc, ce n'est pas possible.
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
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
52
53
54
55 <?php class page { private $xml; private $page; private $head; private $contenu; private $title = false; private $h1 = false; function __construct() { $this->xml = new DOMdocument('1.0', 'iso-8859-1'); $this->page = $this->xml->appendChild($this->xml->createElement('page')); $this->head = $this->page->appendChild($this->xml->createElement('head')); $this->contenu = $this->page->appendChild($this->xml->createElement('contenu')); return $this->contenu; } function ajoutNoeud($tag) { return $this->contenu->appendChild($this->xml->createElement($tag)); } function title($val) { $this->head->appendChild($this->xml->createElement('title', $val)); $this->title = true; } function __destruct() { echo htmlspecialchars($this->xml->saveXML()); } } $page = new page(); $page->title('accueil'); // Ok $truc = $page->ajoutNoeud('truc'); // Erreur logique $truc2 = $truc->ajoutNoeud('truc2'); /* // Avec attributs "contenu" et "xml" en public for( $i=1; $i<=10; $i++ ) { $page->contenu->appendChild($page->xml->createElement('item', $i)); } */ ?>
Dans ma méthode ajoutNoeud(), je ne sais pas comment retransmettre mon objet.
Il faudrait donc que dans return $this->contenu->appendChild($this->xml->createElement($tag));
Que $this->contenu soit remplacer par l'objet que j'ai, donc $truc dans mon exemple.
Une idée de comment faire ceci ?
Partager