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 :

constante de class


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut constante de class
    salut
    est il possible de definir un objet en constante de class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class adminGroupe
    {
    	private $tpl;
    	private $data;
    	const mysql=new Mysqldb(SERVEUR,BASE);
    je pose la question car bien evidement ceci ne fonctionne pas
    merci

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    hum je vois pas trop l'interet

    met le plutot en attribut static ou fais en un singleton que tu récupérera avec une methode statique getInstance
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    pour tout dire j'ai des classes actions qui sont exucutes des ations selon ce qui est passer par l'url
    dans ces classes un certain nombre de methode et de variable sont identiques, donc je pensai faire une class abstraite qui contiennent toute ces methodes mais pour les variable je ne sais pas trop comment mi prendre

    je pour mon probleme actuel je faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    abstract class Abstaite
     
    protected function base()
    {
    $this->base= new Mysqldb(SERVEUR,BASE);
    }
     
    et dans la class herité
     
    public function __construct (){
    parent::base();
    }

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    je pour mon probleme actuel je faire
    Comment ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    abstract class Abstaite 
     
    protected function base() 
    { 
    return new Mysqldb(SERVEUR,BASE); 
    } 
     
    et dans la class herité 
     
    public function __construct (){ 
    $this->base=parent::base(); 
    }
    Qd à cela sa me fait penser à la méthode du singleton cité par siddh.

    Et dans ce cas la.
    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
     
    abstract class Abstaite 
    private Connection_;
     
    // Tu peux faire sa
    protected function GetConnection() 
    { 
       if($this->Connection_ == NULL){
          return new Mysqldb(SERVEUR,BASE); 
          }else{
          return $this->Connection_;
          }
       }
     
    // Ou sa
    public function __get($prop)
    {
       switch($prop)
       {
          case "Connection":
              if($this->Connection_ == NULL){
                  return new Mysqldb(SERVEUR,BASE); 
              }else{
                  return $this->Connection_;
              }
           break;
        }
    }
     
    } 
     
    et dans la class herité 
     
    public function __construct (){ 
         // Premier cas
         $this->Connection = parent::GetConnection(); 
     
         // Second cas, avec le __get
         var_dump($this->Connection);
    }

    Par contre faut être en php5 pour le scond cas.

    Dans les deux cas tu n'auras qu'une instance de ta connection partagée entre toutes tes classes qui se balladent dans lanature à un même instant.

    Voila bye

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    on a du faire un chassé croisé car entre temps j'ai rectifier mon code
    pour l'utilisation de __get dans mon cas precis je ne vois pas l'interet sauf peut etre si j'avais plusieur type de base a gerer ce qui n'est pas le cas
    donc le premiere methode me convient mieux
    merci

  6. #6
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    C'est juste pour faire plus propre...
    Après c'est comme on veux.
    De toute façon les mutateurs/accesseurs ne sont que des fonctions déguisé en propriétés !

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    J'y repensais et j'oublié de te montré une dernière méthode surement plus approriée.

    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
     
     
    class Mysqldb{
     
           private staic $Connection;
     
           private function __construct( )
           {
           }
     
          public static function GetInstance()
          {
              if( self::$Connection == NULL)
             {
                  self::$Connection = new Mysqldb();
              }
              return self::$Connection;
          }
    }
     
    Some class ...
     
     
    class Z {
    public function __construct()
    {
    $a = Mysqldb::GetInstance();
    }
    }
    class Zz {
    public function __construct()
    {
    $Aa = Mysqldb::GetInstance();
    }
    }
     
    $a et $Aa sont parfaitement égaux.
    La même chose en couleur si tu veux
    http://fr.php.net/manual/fr/language.oop5.patterns.php


    Bye

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

Discussions similaires

  1. Constantes de classes ou enumération ?
    Par IGstaff dans le forum Langage
    Réponses: 14
    Dernier message: 08/07/2010, 19h23
  2. [PHP 5.0] Écriture de constante de classe dynamique
    Par metfan dans le forum Langage
    Réponses: 8
    Dernier message: 14/05/2009, 09h44
  3. Constante de classe
    Par Morgoth777 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/07/2008, 09h24
  4. [débutant] Syntaxe d'une constante de classe
    Par alone dans le forum C++
    Réponses: 5
    Dernier message: 14/02/2008, 21h05
  5. [débutant]Définir constante dans classe
    Par Clark dans le forum C++
    Réponses: 11
    Dernier message: 11/05/2006, 17h43

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