|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 11 ![]() |
Bonjour,
Je suis en train de developper un script complet, et celui-ci s'appuit sur des dizaines de variables de configuration (permettant par exemple de configurer le domaine de cookie, la durée maximale d'inactivité des sessions, ou encore le nombre de messages par page). J'ai donc besoin d'accéder à ces variables partout dans mon script : à l'interieur des pages, à l'interieur des fonctions, mais aussi à l'interieur de quelques objets. Je me demandais alors comment définir ces variables. Une idée serait de les définir en global, et d'y accéder ensuite par le tableau $_GLOBALS, mais d'après ce qu'on m'a dit ici, des variables globales n'avaient pas beaucoup de sens dans des fonctions, et encore moins dans des objets. Cependant, il est presque inconcevable de devoir les passer en argument à chaque fonction. Sinon, une fonction getcookie() s'occupant de la lecture d'un cookie en gérant automatique le prefix par défaut n'aurait plus aucun sens. De même, si je devais passer en argument des dizaines de variables en arguments à certaines fonctions, je ne m'en sortirai jamais ! Ma dernière idée : utiliser les constantes. J'ai vu que beaucoup de systèmes, comme xoop, utilisent cette méthode pour leur variables de configuration, ou leurs variables "langages". Qu'en pensez vous ? Que pouvez vous me conseiller ? |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : juin 2004 Messages : 92 ![]() |
chacun ses gouts, pour ma part je préfère un tableau de variables, ce qui me permet de n'avoir qu'une variable appelée et que je peux moduler.
Par exemple: Code :
Bref, je me fais ma variable globale à moi |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 11 ![]() |
Oui, mais tu ne peux pas l'utiliser à l'interieur des fonctions... sauf si tu la passes en argument à chaque fois, mais c'est pas pratique... ou si tu la passes en global, mais beaucoup le déconseillent...
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
tu laisses ça dans une page .php et tu l'inclus quand tu en as besoin.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 11 ![]() |
J'ai l'impression que ma question n'est pas clair... elle porte avant tout sur la portée des variables :
Une variable $config, c'est bien, mais ce n'est valable qu'en locale, donc ce n'est pas utilisable à l'interieur des fonctions, ni même à l'interieur des objets. Et appeller cette page dans chaque fonction, et ce à chaque appel de la-dite fonction, est plutot inconcevable. |
|
|
00
|
|
|
#6 | |
![]() ![]() |
Citation:
Je te conseille d'aller jeter un oeil directement sur la doc officielle, c'est très bien expliqué |
|
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() Développeur informatique Inscription : août 2005 Messages : 1 179 ![]() |
Salut,
tu peux aussi rendre globale la portée de tes variables en les déclarant à l'aide de la fonction define() ce qui fait de cette variable une constante. Mais c'est la même chose que les autres, il faut inclure un fichier de setup dans la page. Je ne suis pas sûr que tu aies bien compris que l'inclusion peut être faite avant tout appel à une classe ou une fonction. Citation:
__________________
http://cdemarche.developpez.com/ Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
|
|
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : juin 2006 Messages : 11 ![]() |
Je pense que vous n'avez pas compris le sens de ma question. Ou que vous n'avez pas du tout compris mon message initiale.
Vous me parlez de "variables globales" ou de "constante", alors que c'est justement les solutions que j'ai proposé en introduction : Citation:
Citation:
Je repose ma question : 1. Utiliser une variable globale peut être une bonne alternative ici, en tant "qu'exception à la règle". 2. Définir un tas de constantes ne peut-il pas nuire aux peformances ? |
||
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
Citation:
Pour ma part en procedurale se sont des constantes, comme le dit ska. En objet, pourquoi ne pas passer par une classe spécifique avec des attributs static. De toute façon l'un dans l'autre sa se ressemble, la seconde solution apporte juste un peu plus de cohérence, mais c'est tout. |
|
|
|
00
|
|
|
#10 | ||
![]() ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#11 | |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 11 ![]() |
Désolé pour le retard.
Citation:
En quoi cela apporte plus de cohérence ? Je trouve ça plus dur à gérer, justement, si toutes les variables de configurations ne sont pas dans un même fichier (par exemple, inutile de charger la configuration du forum sur le blog, et inversement... mais certains variables sont communes aux deux.) |
|
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Inscription : janvier 2006 Messages : 140 ![]() |
pour moi : constantes
|
|
|
00
|
|
|
#13 | |
![]() ![]() |
Citation:
Toute cette explication pour que tu relativise un peu le problème de performances lié au chargement de quelques variables. Conclusion: choisis ce qui est le plus pratique pour toi, sans te demander si c'est la solution la plus performante. |
|
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
Citation:
Encore une fois l'un dans l'autre c'est pareil au final, c'est juste deux manière différentes de produire le même résultat, l'une porte plutot la marque d'un code procédural, et l'autre la marque d'un code objet. |
|
|
|
00
|
|
|
#15 | ||
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
je serais plus pour une classe "statique" style singleton.
dans chaque fonction Code :
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
||
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 11 ![]() |
Ben merci à tous pour réponses
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com