|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bonjour,
J'en ai un peu marre de copier coller des bouts de codes identiques dans différentes pages de mon site : je voudrais rationaliser un peu mon code (je dis rationaliser, si vous avez un meilleur terme hein...). Donc je me demande si il n'est pas possible de placer ce bout de code dans un fichier et de l'appeler ensuite là où j'en ai besoin. Je ne parle pas d'un require ou d'un include hein. Y'a-t'il une solution? Peut être avec les fonctions ? Personnellement je ne les ai jamais utilisées c'est peut être un tort et c'est peut être le moment, sauf si ça n'a rien à voir. Merci pour vos conseils/idées/chèques/suggestions/recommandations.
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
salut, et pourquoi pas avec des classes?
ca me parait bien approprié pour ton cas. Sinon pour le cheque tu peux me contacter en privé, pour que je te donne mes coordonnées pour que tu me l'envoie
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
|
|
00
|
|
|
#3 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
j'ai un meilleur terme : structurer ;o)
pourquoi tu n'aime pas les include ? (le require je comprends ;o) Les fonctions ne sont utiles que si tu as de legere variation dans la portion de code que tu souhaite afficher. Par exemple, si tu veux afficher un texte formaté d'une certaine maniere : Code :
<span style="..."><b><center> [ texte ] </center></b></span> Code :
Code :
Si tu n'as pas de texte variable, (genre pour un header ou un footer de page) le mieux reste un include : A noter que pour utiliser des fonctions, il te faudra aussi des include contenant les declarations des fonctions : Code :
<?php include_once('fonctions.php'); ?>
__________________
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
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
D'accord, donc même pas avec les fonctions, l'include est obligatoire. Ok.
Maintenant prenons cet exemple : - J'ai un script qui vérifie le vocabulaire du champ de formulaire nommé "contenu". - La variable sur laquelle ce script agit est $contenu. - Je veux maintenant utiliser ce même script à un autre endroit du site, pour un autre champ qui se nomme lui "titre". - Ici si je sépare le script initial et que je l'inclu, il va correctement fonctionner pour le premier formulaire mais pas pour le second. Je peux, me direz-vous, faire un $contenu=$titre pour qu'il fonctionne correctement dans le deuxième cas. Mais en fait vous faites comment vous ? Vous avez x requêtes sql ou script à faire à différents endroits , vous copiez-collez sans arrêt le même script par exemple ? Quite à devoir tous les modifier plutot qu'un seul ? Je demande ça parce que mon site commence à devenir assez complexe et je dois mieux le structurer. Y'a pas des méthodes pré-établies pour batir des plans de site cohérents ? Tout le monde fait à sa façon ?
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
dans ton script tu auras quelque chose comme ca
Code :
Code :
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
||||
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Voilà c'est exactement un truc comme ça que j'avais en tête.
Prenons l'exemple de ce script qui effectue des remplacement des remplacements à l'intérieur de $titre. Code :
__________________
C'est pas parce que j'ai tort que vous avez raison. |
||
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
dans ton fichier tu aurais
Code :
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
||
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
1) Bon finalement ça change pas grand chose par rapport à la solution qui consiste à inclure le code que j'ai marqué au dessus et puis juste avant je passe la variable à filtrer dans une autre qui à le nom de celle sur laquelle travaille le script ?
2) Rq j'ai pas compris ce que viennent faire $new= remplace($mavariable); $titi = remplace($toto); dans ton exemple, Bebel. Et dans ta fonction, tu as déjà un nom imposé, $titre, donc comment faire pour que cette fonction travaille avec une autre variable. J'ai rien pigé de plus désolé
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
Citation:
dans la fonction $titre est juste le nom de mon parametre dans sa declaration. Mais apres pour l'appel je peux lui passer le parametre que je veux.
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
|
|
|
00
|
|
|
#10 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bon je vais me chercher un bon tuto sur les fonctions, ça a l'air pratique, il serait peut être tant que je m'y mette (si vous en avez un hésitez pas).
Un exemple pour voir. C'est valable ça ? Code :
Mais alors pourquoi a-t'on tout de même une variable indiquée en paramètre dans la fonction tout en haut ? Uniquement pour l'écriture de celle-ci et la faire fonctionner ? Et lorsque l'on fait $jacques=genial($bob) cela équivaut à dire remplace la variable $bob par la variable $jacques dans la fonction genial() et fait pareil avec, c'est ça ? Et donc une fois que j'ai inclu la fonction dans la page, je peux l'appeler autant de fois que je veux sans avoir à la réécrire, c'est cela ? Je change juste le nom de la variable sur laquelle elle doit agir, c'est cela ?
__________________
C'est pas parce que j'ai tort que vous avez raison. |
||
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
Non en fait si tu veux appliquer la methode genial a $jacques tu dois faire
Citation:
$andre = genial($jacques) tu auras dans $andre le resultat de l'appel de la fonction sur $jacques. Citation:
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
||
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
ok, c'est noté, je vais faire quelques tests pour voir si tout fonctionne comme prévu.
Merci Bebel
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
De rien
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Une autre question :
Si j'ai trois script qui font appel à une même fonction et que j'inclu cette fonction en haut de la page. Est-ce que cela permet d'optimiser le temps d'exécution de page, par rapport à la solution qui consiste à recopier trois fois le même script ?
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() David B.Développeur informatique Inscription : avril 2003 Messages : 742 ![]() |
je dirais oui, mais dans ce cas, je n'en suis pas sur. Mais une chose de sur c'est que si tu devais modifier la fonction tu n'aurais a le faire qu'une fois et pas x fois par page ou tu utiliserais le code. Et donc dans ce cas ca eviterais des oublis.
__________________
Tout énigme a une solution ! Tout est question de discipline ! |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
non, le temps d'execution est meme legerement augmenté... mais si legerement que c'est négligeable... les avantages d'une fonction (maintenabilité, lisibilité, etc...) compensent largement cet inconvenient.
Pour tout te dire... je trouve meme difficile a croire que tu ait pu faire du php sans utiliser de fonction jusqu'a présent, c'est quasi inconcevable pour moi ;o)
__________________
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
|
|
|
#17 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bah non seulement j'ai fait du php mais en plus j'ai fait tout un forum comme ça
Mais maintenant je ressens le besoin de rendre mon compte plus confortable à lire et à mettre à jour, alors je me disais bien que les fonctions étaient faites pour ça . Mieux vaut tard que jamais ! (Rq j'ai pas essayé encore de les placer dans mon code, je suis pas sur ça là, mais bon je vois pas pk ça poserait de problème).
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
|
|
#18 |
|
Membre chevronné
![]() Inscription : décembre 2005 Messages : 766 ![]() |
Structurer une application c'est très important...
Un site web et par extension la plupart des appli quelque soit le language utilisé c'est comme une maison... il est inutile de mettre un chauffe-eau dans chaque pieces... .. . Dans l'idée il est donc important de bien organiser la structure interne du site (je ne parle pas de la navigation)... en général on crée des fichiers commun qui définnissent/appliquent des routines elles même communes au site... l'exemple le plus courant c'est le header.php qui vas lancer toutes les routines indispensable au site... connection à la base, récupération de la configuration du site, verification relative à l'utilisateur (connecté, pas connecté, droits, mise à jour de la session), définition des fonctions communes au site, instanciation de class (par exemple pour les templates) s'il y a besoin, etc... ainsi tu n'as plus qu'a inclure le fichier header.php dans ta page pour que toute ces routine soit lancée... .. . Ne pas fonctionner comme ça à pour avantage de faire gagner quelques microsecondes en temps d'éxécution (faut s'appeler flash gordon pour voir la différence comme disait quelqu'un sur un autre topic) mais de rendre illisible le code (page de xxxxxxx lignes), d'en rendre la maintenance quasi impossible (50 pages à modifier pour changer 3 lignes) et surtout de considérablement grossir ton appli (les fichiers font le double voir le triple de la taille qu'ils pourraient faire)... .. . Voili voilou... .. . @ tchaOo° |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com