|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : août 2005 Messages : 171 ![]() |
Bonjour,
Pour gérer le traitement et l'affichage de mes pages, j'utilise le code suivant : Code :
Code :
D'où ma question : d'après vous, cela est-il judicieux de passer mes méthodes et attributs en static (en sachant de que toutes façons je n'aurai jamais plusieurs instances de ces classes, et que de ce fait ça ne me changera rien que mes méthodes et attributs soient ou non static), ou est-ce là une mauvaise idée? Merci d'avance pour l'attention que vous porterez à ma question |
||||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() ![]() |
Bonsoir,
Citation:
Généralement, une page est découpée en blocs graphiques qui peuvent être présents en plusieurs "exemplaires" sur la même page avec chacun un paramétrage différent. D'où l'utilité de conserver tout les blocs en mode dynamique (instances de classe). |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : août 2005 Messages : 171 ![]() |
Voici une explication plus détaillée du fonctionnement de mon site :
- Mes urls sont du genre index.php?classe=toto&methode=tata - Mon fichier index.php instancie la méthode index() de ma classe Page - index() va, entre autre, vérifier si la classe Toto et la méthode tata existent et si oui appelle cette dernière (sinon il redirige l'utilisateur sur une page d'erreur) - tata() effectue le traitement (requêtes SQL, traitement de formulaires etc), puis renseigne une variable indiquant le chemin vers le fichier gérant l'affichage du contenu central, et enfin inclue le fichier de template.php - finalement, le template gère l'affichage du tout en affichant le header, les menus (un fichier php séparé), et le contenu central grâce à la variable définie plus haut. En effet, comme le fichier template est appelé dans ma méthode tata(), j'ai accès à toutes les variables définies dans cette méthode, à l'intérieur de mon fichier template.php Je n'ai donc jamais plusieurs instances de Page ou de Toto. J'appelle plusieurs classes, mais une fois chacunes |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
j'espere que tu ne laisse pas de méthode "debug" ou "afficherVariablesLocales" parce que sinon ce n'est pas tres sécurisé...
Prendre un parametre dans l'URL et appeler la méthode correspondante sans la valider me parait dangereux. Sinon, si tu veux instancier ta classe dynamiquement, tu peux essayer (PHP5) : Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : août 2005 Messages : 171 ![]() |
En effet, il y a certains contrôles sur les paramètres de l'url : par exemple, ils ne peuvent contenir que des lettres et des chiffres ainsi que le tiret bas. D'autre part, il y a aussi une notion de permissions : n'importe qui ne peux pas accéder à n'importe quelle classe, puisqu'il doit avoir les permissions pour le faire (chaque utilisateur a ou non le droit d'appeler telle ou telle page).
Je connais des méthodes pour me permettre d'instancier ma classe, la plus simple selon moi étant : Code :
En effet, j'ai lu à certains endroits qu'il était conseillé de mettre en static toutes les méthodes et attributs qu'on ne va pas instancier plusieurs fois (pour un soucis d'optimisation). Mais ça me semble un peu "simpliste" |
||
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() |
Bonjour,
L'utilisation du static est très utile et se justifie dans bien des situations. Les aficionados du tout dynamique (static == beurk) te diront que maintenant la mémoire n'est plus un problème et que tu peux quasiment instancier autant de classes que tu veux sans te heurter à un mur et puis les autres (dont je fais partie) te diront que l'utilisation du static à bon escient reflète un esprit d'organisation et de réflexion. Tu ne codes pas comme un goret sans trop y réfléchir. D'expérience, tu finiras par séparer ton code en deux : statique et dynamique (de temps en temps une classe dynamique auras une petite fonction statique mais sans plus). Bref, si tu as le temps roules sur le static, dans ce cas je te dis bon refactoring et soignes tes tests après une modif aussi importante. |
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : août 2005 Messages : 171 ![]() |
Donc si je te comprends bien Xysyo, on peux résumer ça en "mettre tout en static, SAUF si j'ai une raison pour ne pas le faire (je compte instancier cette classe)". C'est bien ça?
En tous cas merci pour vos réponses |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com