|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 69 ![]() |
Salut,
Je suis en train de développer une petite classe et je me pose des questions quant à la manière d'en gérer la "configuration". En fait, j'ai deux possibilités qui ne m'offrent pas forcément les mêmes avantages. Je peux soit stocker la configuration dans un tableau et passer ce tableau en paramètre lors de l'instanciation de l'objet. Avantage : lors de l'instanciation de l'objet, je peux effectuer certains traitements, en les incluant dans le constructeur. Inconvénient : ça ne me plait que moyennement, je ne trouve pas ça très propre. Mais comme j'ai déjà vu faire ça dans un script, j'envisage la possibilité. Autrement, je peux instancier l'objet et modifier les propriétés ensuite. Ceci m'oblige à définir une méthode qui exécutera les traitements "automatiques" à faire avant toute autre chose. Avantage : ça me parait plus cohérent en terme de programmation. Inconvénient : il faut nécessairement passer par une méthode supplémentaire pour l'exécution "automatique". En fait, il s'agit d'une classe que je compte publier ensuite. Ceci a son importance du fait de l'ergonomie que je souhaite obtenir. Avoir un fichier séparé dans lequel on définit la configuration, laquelle est ensuite chargée à l'instanciation de l'objet me parait facile à mettre en oeuvre pour un "utilisateur lambda". Cependant, la deuxième méthode, similaire à Smarty, est tout à fait claire pour quelqu'un qui est habitué à la POO. Mais... elle m'empêche une exécution automatique à l'instanciation de l'objet... J'ai parcouru vite fait quelques sujets qui s'apparentaient à mon problème, et j'ai vu qu'il était envisageable d'utiliser une classe pour la seule configuration. N'étant pas encore au top avec la POO en php, j'ai du mal à me rendre compte de comment ça pourrait fonctionner, des avantages et inconvénients. Si vous avez un avis sur la question, je suis intéressé. |
|
|
00
|
|
|
#2 | ||||
|
Membre chevronné
![]() Inscription : décembre 2005 Messages : 766 ![]() |
Salut... tout dépend de ce que tu entend par configuration (nombre de paramètres, etc)... .. .
Perso voici, en gros, comment je procède généralement... .. . La configuration est stockée dans un attribut sous forme de tableau... .. . Code :
Code :
@ tchaOo° |
||||
|
|
00
|
|
|
#3 | ||||
|
Membre confirmé
![]() Développeur Web Inscription : septembre 2006 Messages : 215 ![]() |
Salut
moi perso, je cree une class Configuration avec une variable static config exemple: Code :
Code :
|
||||
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : décembre 2005 Messages : 766 ![]() |
Ouep très bonne idée mais dans le cadre d'un projet redistribuable ça te limite à php5 ce qui est pas top si la class n'utilise pas de possibilités spécifiques à php5... .. .
@ tchaOo° |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Développeur Web Inscription : septembre 2006 Messages : 215 ![]() |
vivi c vrai,
mais bon à partir du moment où on veut faire de l'objet en php, ...on ce doit d'utiliser php5 quand meme. |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : décembre 2005 Messages : 766 ![]() |
Uhm... question de point de vue... portabilité Vs possibilité... tout dépend du projet... .. .
@ tchaOo° |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 69 ![]() |
Salut, et merci pour les réponses.
En fait, j'aime bien avoir un maximum de paramètres, surtout quand c'est du code redistribué. Si je comptais le garder pour moi, ce serait mon affaire. Mais dans mon cas présent, je souhaite que l'utilisateur puisse paramétrer un maximum de choses le plus simplement possible. Actuellement, j'ai 9 propriétés paramétrables. Les autres ne sont utilisées que pour le fonctionnement du script. En gros, je ne me vois pas passer les 9 valeurs en paramètres, d'autant que ça a vocation à augmenter. Kankrelune, il y a un petit truc que je ne comprends pas bien dans ton exemple. Tu fais mention d'un constructeur avec la méthode __construct(), qui, si je ne dis pas de bêtise, à été introduite dans php5. Et tu parles aussi d'une méthode maClass(), qui me semblait être la définition du constructeur en php4, laquelle est censée être encore compatible en php5... Du coup, je ne vois pas l'intérêt de spécifier les deux, si ce n'est dans un soucis de compatibilité entre php 4 et 5 ? (mais je ne pige pas tous les rouages de ce mécanisme...). En fait, ma classe sert à manipuler certains fichiers. Je souhaite, entre autres paramètres, spécifier quel fichier, le répertoire racine (du site), quelques noms de fichiers spécifiques, etc. Je souhaite que certains fichiers soient lus dès l'instanciation de l'objet, et que leur contenu soit traité à ce moment là, histoire que l'objet soit utilisable en l'état. Bon, j'ai toujours la possibilité d'utiliser une méthode pour ça, qui serait appelée explicitement, mais ça me parait un peu lourd, comme je le disais, pour un simple utilisateur de ma classe. Encore une fois, si c'était pour un script perso, je ne me poserais pas la question... Sahid, ce que tu me décris là, c'est ce que j'ai vu quelque part, dont je parlais dans mon premier message, et dont je disais que je n'avais pas bien compris comment ça marche... (ouais, je suis pas 100% débutant en POO php, mais pas loin). Si donc, tu voulais bien détailler un poil plus, je n'y serais pas opposé Par ailleurs, comme le dit kankrelune, je préfère, dans le cas d'un projet redistribuable, ne pas me limiter à php5. D'ailleurs, je ne maitrise pas suffisament la POO en php pour être capable d'utiliser à fond les possibilités de php5. Pourquoi pas, plus tard, avoir deux versions, une pour php4 et une optimisée pour php5. Mais je n'en suis pas là encore. Je continue de réfléchir |
|
|
00
|
|
|
#8 | |
|
Membre chevronné
![]() Inscription : décembre 2005 Messages : 766 ![]() |
Citation:
@ tchaOo° |
|
|
|
00
|
|
|
#9 | |
|
Membre confirmé
![]() Développeur Web Inscription : septembre 2006 Messages : 215 ![]() |
Citation:
sache quand meme que ca utilise des fonctionnalitées offerte seulement par PHP5 |
|
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 69 ![]() |
Ce que je n'ai pas compris... A peu près tout...
Ton exemple est à peu près clair, quoi que pas encore très parlant pour moi, mais je ne vois pas vraiment quels avantages je retire de cette technique. En plus, j'ai un peu de mal avec l'utilisation de l'opérateur de résolution de portée : ça ne me parle pas vraiment et c'est un peu trop abstrait pour moi, encore... Je ne doute pas que ça n'utilise pas des fonctionnalités propres à php5. J'insistais simplement sur le fait que j'ai besoin que ce soit 100% compatible php4 et 5 |
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Développeur Web Inscription : septembre 2006 Messages : 215 ![]() |
l'accès à une variable statique ce fait très facilement, pas besoin de créer une instance de la class configuration, puis étant donner que les configurations ne change pas il n'est pas nécessaire de crée des copie de celle ci à chaque fois que tu en a besoin, ça alourdi le soft et diminue les perf, sans compter que tu y perd en clarté dans le code
tu as juste à faire MaClass::MaVarStatic |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 69 ![]() |
Mais justement... Si je veux créer plusieurs instances d'une même classe, chacun ayant une configuration différente ?
L'exemple bête, dans mon cas, mes objets manipulent un fichier spécifique. Plusieurs objets manipuleraient donc plusieurs fichiers de la même nature, mais situés dans des répertoires différents, faisant référence chacun à un fichier utilisateur différent, etc Est-ce que l'utilisation d'une classe configuration serait, dans ce cas là, également intéressante ? Pour l'instant, j'expérimente avec deux arguments passés lors de l'instanciation : le premier définissant le chemin d'un fichier, le second étant un tableau avec le reste de la configuration, laquelle, si elle n'est pas mentionnée, prend des valeurs par défaut. L'idée est que le second paramètre est optionnel, pas le premier. Je ne sais pas si faire des tests de performances serait vraiment aisé à mettre en place ou pertinent. Je verrai plutôt ce qui est le plus ergonomique pour un utilisateur lambda. Je ne fais qu'expérimenter, je reste ouvert à toute solution alternative |
|
|
00
|
|
|
#13 |
|
Membre chevronné
![]() Inscription : décembre 2005 Messages : 766 ![]() |
Pour les test de performance fais une recherche à XDebug... .. .
@ tchaOo° |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com