J'essaie d'écrire une classe "fiche", qui possèderait un constructeur permettant de construire une fiche à partir d'un fichier xml. grosso modo, ça ressemble à ça : (j'ai zappé les parties qui me semblent inutiles, je peux les remettre)

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
56
57
class fiche {
	var $url ;
 
	var $titre ;
	var $auteur ;
	var $contenu ;
 
	// fonction appelée lors de la rencontre d'une balise de début
	function startElement($parser,$name,$attributs){
...
	}//startElement
 
 
	// la fonction appelée lors de la rencontre d'une balise de fin
	function endElement($parser,$name){
...
	}//endElement
 
	// la fonction d'affichage des données
	function afficheData($parser,$data){
...
	}//afficheData
 
	function fiche($url) {
		// données
		$this->url = $url ;
 
		// on crée un objet d'analyse de texte xml
		$xml_parser=xml_parser_create();
		// on indique quelles fonctions exécuter en début et fin de balise
		xml_set_element_handler($xml_parser,$this->startElement,$this->endElement);
		// on indique quelle fonction exécuter lors de la rencontre de données
		xml_set_character_data_handler($xml_parser,$this->afficheData);
		// ouverture du fichier xml en lecture
		if (! ($fp=@fopen($url,"r"))){
		print "impossible d'ouvrir le fichier xml $url";
		exit;
		}//if
		// exploitation du fichier xml
		// par blocs de 4096 octets
		while($data=fread($fp,4096)){
		// analyse des données lues
		if (! xml_parse($xml_parser,$data,feof($fp))){
		// il s'est produit une erreur
		printf ("erreur XML : %s à la ligne %d\n",
		xml_error_string(xml_get_error_code($xml_parser)),
		xml_get_current_line_number($xml_parser));
		// fin
		exit;
		}//if
		}//while
		// le fichier a été exploré
		// on libère les ressources occupées par l'analyseur xml
		xml_parser_free($xml_parser);
	}
 
}
Et j'ai une erreur :

Notice: Undefined property: startElement in c:\program files\easyphp1-8\www\testclasse.php on line 32



Notice: Undefined property: endElement in c:\program files\easyphp1-8\www\testclasse.php on line 32



Notice: Undefined property: afficheData in c:\program files\easyphp1-8\www\testclasse.php on line 34
J'ai fait des tests avec des programmes de ce type simplifiés à l'extrême, j'en ai corrigé un en transofrmant un print("résultat : $objet->methode()") en print("résultat : ".objet->methode()) ; et j'ai cru que ça marcherait ici aussi (dans l'exemple dont je suis parti, il y a des guillemets autour des fonctions en paramètres des xml_machin_handler) mais ce n'est pas ça...