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 :

Portée d'un objet d'une classe perso


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Portée d'un objet d'une classe perso
    Bonjour à tous,

    voici ma question:

    j'ai développé un petit environnement web pour moi. Cet environnement gère des reunions de travail et chaque réunion est entrée par l'intermédiaire d'une page précise. Cette page est générée automatiquement via l'ajout de différents modules, selon que ces modules soient autorisés à l'affichage pour l'utilisateur connecté... (page appelée page.php)

    Aucun souci jusque là forcément...
    Ensuite, j'ai une class Reunion que je déclare dans un fichier externe (fonctions.php) et je l'instancie juste après sa déclarationafin de créer mon objet via un : $reunion = new Reunion();

    Aucun soucis jusque là...

    Je reviens à présent sur ma page.php à présent. Dans cette page, avant tout autre chose, j'appelle le fichier fonctions.php via un require_once. Je peux désormais utiliser l'objet $reunion et lui définit quelques nouvelles valeurs à ses attributs (genre reunion->date=machintruc). Si je les affiche pas de problème non plus.

    Ensuite ma page.php doit afficher les modules, et là, c'est le drame

    J'utilise, pour afficher mes modules, une fonction (afficher_module) présente dans mon fichier functions.php. Dans cette même fonction, je teste si l'utilisateur en cours peut afficher le module et je l'affiche, le cas échéans, par un require_once du script php du module (ex: require_once (module_choix_date.php)).
    Sauf que si le module a besoin de mon objet $reunion déclaré précédemment, cela va m'afficher une erreur.

    En effet, je fais un require_once à l'intérieur d'une fonction et mon objet $reunion n'est forcément pas accessible dans cette fonction puisqu'une fonction n'a que des variables qui lui sont propres...

    Je peux régler/contourner le problème en rajoutant un 'global $reunion' dans la fonction mais je ne trouve pas ça très propre...

    Existe-t-il un autre moyen pour rendre mon objet $reunion accessible de partout dans le script en cours?

    Merci de votre lecture

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Hello, oui tu peux faire ça via du statique et Registry

    pour ensuite l'avoir (par exemple) comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Registry::get('reunion');
    pour enregistrement ça sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Registry::set('reunion', $reunion);
    petit exemple :

    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
    class Registry
    {
        private static $_storage;
     
        public static function get($name)
        {
            if(isset(self::$_storage[$name]))
            {
                return self::$_storage[$name];    
            }
     
            throw new UnexpectedValueException();
        }
     
        public static function set($name, $value)
        {
            self::$_storage[$name] = $value;
        }
    }
     
    $var = 'test';
    Registry::set('var', $var);
     
     
    function hello()
    {
        $var = Registry::get('var');
        var_dump($var);
    }
     
    hello();

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oki oki... Je n'avais pas réfléchi à cette possibilité d'utiliser une autre class...

    Un grand merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  2. Réponses: 19
    Dernier message: 02/02/2006, 23h30
  3. [MFC][Debutant] Une classe perso de CEdit
    Par kiroukou dans le forum MFC
    Réponses: 6
    Dernier message: 21/06/2005, 15h07
  4. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30
  5. [ JSP ] [ Tomcat ] importer une classe perso
    Par captainpouet dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 11/03/2004, 11h30

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