IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Méthodes invisibles


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut [POO] Méthodes invisibles
    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...

  2. #2
    Membre éclairé
    Homme Profil pro
    Coordinateur développement web
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Coordinateur développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut
    salut,

    Tes erreurs signifie qu'il ne trouve pas les propriétés dans ta classe, c'est à dire celle que tu declare via le var.

    Or dans ton cas, il s'agit de fonction que tu souhaite appeler et non pas e variable, donc ajoute les parenthèse à la fin et cela devrait marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xml_set_element_handler($xml_parser,$this->startElement(),$this->endElement());
    Mic

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    salut,

    non ça ne marche pas. Il faut dire que ces trois fonctions ont besoin de plusieurs arguments...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    En fait, il semble qu'il faille utiliser xml_set_object($xml_parser, $this) ; avant les xml_set_machin.

    Je suis preneur d'une explication (je ne vois pas en quoi ma construction est syntaxiquement incorrecte). Je veux bien aussi comprendre pourquoi le nom des fonctions callback est donné sous forme de chaines de caractères...

Discussions similaires

  1. [POO]Méthode récursive pour tester dépendances
    Par viviboss dans le forum Langage
    Réponses: 4
    Dernier message: 28/05/2007, 12h06
  2. [POO] Méthode abstraite PHP4
    Par joebarteam88 dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 07h32
  3. Réponses: 4
    Dernier message: 17/03/2007, 01h06
  4. [débutant][JMenuItem] clone() : Méthode invisible
    Par lejimi dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 22/01/2006, 18h03
  5. [POO] Rendre invisible un objet Flash en Javascript
    Par tafkap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/10/2004, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo