salut
est il possible de definir un objet en constante de classje pose la question car bien evidement ceci ne fonctionne pasCode:
1
2
3
4
5 class adminGroupe { private $tpl; private $data; const mysql=new Mysqldb(SERVEUR,BASE);
merci
Version imprimable
salut
est il possible de definir un objet en constante de classje pose la question car bien evidement ceci ne fonctionne pasCode:
1
2
3
4
5 class adminGroupe { private $tpl; private $data; const mysql=new Mysqldb(SERVEUR,BASE);
merci
hum je vois pas trop l'interet :D
met le plutot en attribut static ou fais en un singleton que tu récupérera avec une methode statique getInstance
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:
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(); }
Comment ? ;)Citation:
je pour mon probleme actuel je faire
Qd à cela sa me fait penser à la méthode du singleton cité par siddh.Code:
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(); }
Et dans ce cas la.
Code:
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
on a du faire un chassé croisé car entre temps j'ai rectifier mon code :lol:
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
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 !
J'y repensais et j'oublié de te montré une dernière méthode surement plus approriée.
La même chose en couleur si tu veuxCode:
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.
http://fr.php.net/manual/fr/language.oop5.patterns.php
Bye