|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Aurélien B.Ingénieur développement logiciels Inscription : mai 2005 Messages : 21 ![]() |
Bonjour,
Existe t-il un moyen d'utiliser des opérateurs lors de la définition d'une variable statique de classe en PHP5? Par exemple le code suivant génère des erreurs : Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Développeur Web Inscription : juillet 2007 Messages : 193 ![]() |
?? le mot cclé static sur une variable. Jamais vu, pour moi c'est public, private ou protected.
|
|
00
|
|
|
#3 | ||
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Essaye static public $var. Mais quel interet dans un objet ?
Citation:
Citation:
__________________
http://www.ape-project.org/ |
||
|
00
|
|
|
#4 |
|
Membre actif
![]() Développeur Web Inscription : juillet 2007 Messages : 193 ![]() |
Cool j'ai appris un truc, merci.
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Aurélien B.Ingénieur développement logiciels Inscription : mai 2005 Messages : 21 ![]() |
Oui, on peut utiliser les variables static dans les classes :
http://fr.php.net/manual/fr/language.oop5.static.php Quand à la définition de la visibilité (private, protected ou public), elle doit être faite avant la déclaration static pour respecter la compatibilité avec PHP4. Par défaut, une variable static est publique. Mais ma question portait plus sur l'utilisation des opérateurs à droite de l'opérateur '=' lors de la définition de la variable static. Celle-ci ne semble pas être autorisée, mais je n'ai encore rien lu à ce propos... Quand à l'intérêt d'une telle définition, c'est pour définir la configuration d'un logger dont les fonctions sont static : Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Salut,
Pour ce que j'en sais, et sa date un peu, style php 5.0??. Non tu ne peux pas ! Tu vas devoir le définir en dehors de la classe, genre : Code :
Par contre, pourrais tu m'expliquer cette syntaxe : static $logLevel = self::DEBUG | self::ERROR; Je dois bien avouer qu'elle est des plus obscures pour moi ! Et ce depuis toujours .... bye |
||
|
|
00
|
|
|
#7 | |
|
Invité régulier
![]() Aurélien B.Ingénieur développement logiciels Inscription : mai 2005 Messages : 21 ![]() |
Ca ne m'arrange pas du tout. Bon, il va falloir que je trouve un autre moyen alors.
Citation:
- Affectée avec le résultat d'un OU binaire entre deux constantes définies dans la même classe : DEBUG = 0001 (0001 en binaire) ERROR = 0004 (0100 en binaire) self:: DEBUG | self::ERROR === 0005 (0101 en binaire) PS : self:: DEBUG sans espace fait self: |
|
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Code :
aie, c'est du binaire... C'est pour cela que ca m'echappe totalement ! Faudrait que je m'y mette un jour, sa à l'air plutôt pratique. PS: il faut desactiver les smileys dans le message :) cf les options supplémentaires lorsque tu postes (en dessous des boutons envoyer la réponse, et prévisu). |
||
|
|
00
|
|
|
#9 | ||||
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Je ne comprend toujours pas pourquoi tu souhaites définir des variables statics dans une classe.
Les valeurs de ta variables garderons de toute façons leur valeurs si tu reste dans le contexte objet. (C'est le but). Au pire tu fais quelques chose comme ca dans un fichier de conf : Code php :
Et dans ta class : Code :
__________________
http://www.ape-project.org/ |
||||
|
00
|
|
|
#10 | |
|
Invité régulier
![]() Aurélien B.Ingénieur développement logiciels Inscription : mai 2005 Messages : 21 ![]() |
Citation:
Après, s'il est avéré qu'il n'est pas possible de définir en static des variables de classe à l'aide d'opérateurs, je vais revoir la conception de cette classe et utiliser le design pattern singleton. Si je n'ai pas d'autres réponses d'ici Lundi, je fermerai ce post. Merci à tout ceux qui ont répondu. |
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Pour répondre a Para|Bol, une variable statique dans une classe a un intéret car c'est une variable commune à toutes les instances de la classe. Ca permet par exemple de faire un compteur d'instance d'une classe donnée. Le nombre d'instances est déclaré en statique dans la classe et initialisé a 0, il est incrémenté a chaque fois dans le constructeur.
Dans ce cas particulier de l'utilisation des variables statiques (que tu décris comme des constantes et non plus comme des variables) les define sont surement plus appropriés. Enfin, je ne crois pas que l'utilisation des variables de membre statique soit appliquable comme cela en PHP, d'apres la documentation, une instance de classe ne peut accéder directement a son membre déclaré statique, cf la documentation. |
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() Aurélien B.Ingénieur développement logiciels Inscription : mai 2005 Messages : 21 ![]() |
Avec ce petit script :
Code :
static_var dans constructeur : Si, si! C'est possible static_var dans test() : Si, si! C'est possible |
||
|
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Et sinon pourquoi ne fais tu pas comme cela ?
Code :
? bye |
||
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Aurélien B.Ingénieur développement logiciels Inscription : mai 2005 Messages : 21 ![]() |
Merci Kaymak, je vais faire comme ça.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com