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] Global et Classe


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [POO] Global et Classe
    Bonjour!

    Voila, j'ai un probleme avec mon script pour mon site. J'ai cree une classe Mysql qui gère toute les requetes et compagnie et mon probleme se situe la:

    Ma class est decrite dans un fichier inc/mysql.php. Lors de l'initialisation de tout mes script, ca charge une page "de base", main.php dans laquel toute mes classe s'initialise. J'avais quelques soucie de compatibilité entre les classe, c'est pour cela que lorsque j'initialise, je la met en global :

    $GLOBALS['sql'] = new Mysql(.....);

    Dans mes autre classe, quand j'utilise par exemple : $GLOBALS['sql']->query(...), ca marche parfaitement, mais pas dans les script courant en question......

    mysql.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?
    class Mysql () 
    {
    ....
    }
    main.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?
    require_once('mysql.php');
    $GLOBALS['sql'] = new Mysql (......);
    script.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?
    require_once('main.php');
    $sql = .....;
    $GLOBALS['sql']->query($sql);
    Et donc, il me dit comme si ma classe n'etait pas définie ( Fatal error: Call to a member function on a non-object in script.php on line 131 )

    Je pense qu'il faut que je crée un nouveau pointeur qui pointera sur l'objet crée, mais je prefère un conseil

    si quelqu'un peu m'apporter ses lumier la dessus, merci bcp!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    hello,

    teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $a = 'toto';
    $GLOBALS['a'] = 'titi<br />';
    echo $a;
    $a = 'tutu';
    echo $GLOBALS['a'];
    tu ne regarderas plus $GLOBALS du meme oeil

  3. #3
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    Salut

    Peut être un problème de persistance de connexion ... hum, essai de te connecter avec "mysql_pconnect ()" m'enfin je ne te garantie rien,

    c quand même un peu farfelu de travailler comme ca ( ;

    ...PDO est ton ami !
    sahid

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    jviens de testé en rajoutant un nouveau pointeur, et ca marche.... Donc en gros, le $GLOBALS me sert juste a ne pas mettre de global $pointeur dans chaque nouvelle classe mais bon, un peu decu de ces fonctionalité...

    Pour le vive POO, j'aime beaucoup les classe, je trouve que ca structure bien, et ca permet de pouvoir vraiment bien tout personalisé dans le code... Bon, je classe ca comme resolu mais bon....

    Merci a vous 2

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    re,

    avis perso sur la question: utiliser global ou $GLOBALS dans une classe n'est pas une bonne solution. je préfere de loin passer les parametres extérieurs de maniere explicite, soit dans le constructeur, soit via une méthode...

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

Discussions similaires

  1. [PHP 5.0] [POO] "global" dans une classe
    Par keaton7 dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2009, 13h40
  2. [POO] Déclaration de classe selon une variable
    Par Michaël dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2006, 18h33
  3. [POO] [PHP 5 CLASSES]Source à part?
    Par Jean_Benoit dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 11h50
  4. [POO] Ecrire une classe descendante
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 14/10/2005, 19h04
  5. Réponses: 2
    Dernier message: 09/10/2005, 15h35

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