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 :

PHP4 appel d'une fonction dans une autre


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut PHP4 appel d'une fonction dans une autre
    Voila j'ai un petit soucis, je n'arrive pas a appeler une fonction
    dans une autre fonction en PHP4:
    J'ai utilisé $this->NomDeLaFonction() et aussi NomDeLaFonction() tout court,
    en faisant comme ca, j'obtient une PHP fatal error.

    Est ce quelqu'un a déja eu ce probleme et comment le resoudre.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    sans code ça va être difficile... on peut avoir le code des fonctions, et leur context (à priori dans une classe, etc...) ?

    au pire, mets pas ton code à toi, mais un ECM (Exemple Complet Minimal )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Code source
    Effectivement cela peut dépendre du contexte, donc voici le code source:

    ....
    class Connection {

    //Static
    var $db;
    var $isConnected = false;

    function connect() {

    if ($this->$isConnected == false){
    $mydb = mysql_connect(DBHOST.':'.DBPORT ,DBUSER,DBPASS) or die ('could not connect to server :' . mysql_error());

    mysql_select_db (DBNAME) or die ('could not select db :' . mysql_error());

    $this->$db = $mydb;
    $this->$isConnected = true;
    }
    }

    //Public
    function db_query($str){
    connect(); --> Provoque une erreur

    $result = mysql_query($str) or die ("Erreur : ". mysql_error());

    while ($row = mysql_fetch_array($result)) {
    $res[] = $row ;
    }

    return $res;
    }

    .....

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    (le # en haut)

    ta fonction est membre d'une classe, tu ne peux donc l'appeller que sur une instance de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $mysql = new Connection();
    $mysql->connect();
    PS : tu as l'air d'être en PHP4... fait attention aux fuites au cas où tu ne détruit pas ton objet
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    donc l'appel de ta fonction devrait se faire comme ceci:

    Ensuite, les erreurs doivent venir d'ailleurs, comme à toutes les lignes où tu fais référence à des variables membres. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->$db = $mydb; // incorrect
    $this->db = $mydb; // correct
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut resolu
    Ca marche:

    J'ai utilisé le nomDelaClasse::NomDeLaMethode().

    Je crois en plus avoir compris le fonctionnement,
    il y a trois cas:

    - 1 - si le fichier PHP4 n'est pas une classe:
    o,

    Merci a tous

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut resolu
    Ca marche:

    J'ai utilisé le nomDelaClasse::NomDeLaMethode().

    Je crois en plus avoir compris le fonctionnement,
    il y a trois cas:

    - 1 - si le fichier PHP4 n'est pas une classe:
    on appelle simplement la fonction
    - 2 - si c'est une classe de service (statique)
    on utilise nomDelaClasse::NomDeLaFonction()
    - 3 si c'est une classe d'objet (avec constructeur),
    on utilise $this->NomDeLaFonction()

    Merci a tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Réponses: 8
    Dernier message: 05/07/2011, 11h51
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Appel d'une fonction dans une iframe sur un autre domaine
    Par morikann dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/06/2007, 18h46
  5. Réponses: 8
    Dernier message: 10/01/2007, 21h10

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