Usages et conventions - PHP - Programmation
Marsh Posté le 24-09-2003 à 01:22:08
en php, c'est la fête du slip et l'anarchie.
tu fais comme tu le sens.
de toutes façons, un projet en php et en équipe, c'est pas réalisable, donc tout le monde s'en fout.
vivement vendredi
Marsh Posté le 24-09-2003 à 02:08:39
cherrytree, je crois que 90% de tes questions sont inutiles.
de manière globale, PHP est très permissif ce qui ne t'empeche pas de rester rigoureux
ex: éviter ce genre de truc
Code :
|
et ensuite faire tes choix personnels et définitifs sur la façon dont tu vas coder avec ce langage
les classes en PHP 4, oui j'y crois . Bien que ca n'apporte pas la même securité, rigidité, practicité que l'objet pur, ca constitue tout de même des boites noires applicatives (centralisées et plus faciles a maintenir). Et faut pas oublier que PHP5 va faire un grand bond en avant a ce niveau là. Autant s'y conformer maintenant.
le reste, ca me semble inutile d'en débattre, wala
Marsh Posté le 24-09-2003 à 02:27:56
the real moins moins a écrit : de toutes façons, un projet en php et en équipe, c'est pas réalisable, donc tout le monde s'en fout. |
Lol.
Et pourquoi ça?
C'est sur qu'en php, beaucoup de code est fait en solitaire, mais il existe quand même des cas de programmes fait en équipe.
Ca m'étonerait que pghpmyadmin, phpbb et autres mastodontes de la programmation php soient tous fait en solitaire.
Et puis, c'est sans conter quelques "progiciels" contenant plusieurs centaines de milliers de lignes de codes si ce n'est quelques millions (je sais, c'est rare, mais ca existe). Ca m'étonerait que de tels mamout aient été fait par un seul gas. (ou bien il a passé 15 ans de sa vie a ne faire que ça.)
bon, pour revenir a la question de départ , moi, je suis :
if (foo)
{
//du code.
}
Quand aux "particularités" ( ca n'en est pas vraiment, vu quil existe la même chôse dans d'autres languages) :
1) je mets toujours le ; ne seraissse que pour éviter plustard les problème de compilations quand on inclus le fichier ou qu'on rajoutes du code.
2)
<?php
$link = mysql_connect('localhost', 'root', '');
//encore du code.
?>
3) mes premières créations :
<body>
<h1>Salut !</h1>
<?php while ($row = mysql_fetch_assoc($result)) {
//du code.
?>
</body>
Mais maintenant, a par sur une seule page (parmis plus d'une centaine) je ne met plus de code html en dehors du code php (beurk + problème d'header)
4) Les quoi ?
5)
<?php
echo "toto";
?>
6) C'est quoi ça HEREDOCS ???
les chaines, je les encadre toujours par des ".
7)
Code :
|
8) Les classes sont pratiques pour certain truc, même en php4.
Mais en php5, c'est encore plus sécurisé.
9) et 10) echo et sans parentaises.
Ce n'est que pour les define que je rajoutes les (). Je le fais a cause de la virgule qu'est entre les deux membres, afin de voir desuite que c'est lié.
Côté php, un truc auquel t'as pas pensé: les casses noms de variables. moi, c'est tout en minuscules avec parfois des _ au milieu et pour les classes, je mets tout en majuscules avec parfois des _ au milieu.
Les fonctions, je mets tout en minuscules également, avec parfois des _ au milieu.
Egalement, l'indentation, moi, je fais 2 espaces par niveau d'indentation.
Et si tu veux joué a ce petit jeux là il y a aussi les requêtes SQL :
plustôt les mots clés SQL en majuscule ou minuscule (SELECT ou select)? (moi, c'est en majuscule)
les noms de tables en majuscules ou minuscules? (moi en minuscule)
les noms de colones en majuscules ou minuscules? (moi en minuscule)
Je fais ça pour bbien diférencier les mots clés SQL des noms de tables, de bases ou de colonnes, tout enévitant de passer sans arrêt des majuscules aux minuscules (et inversement) dans le reste du code php.
Enfin, tout ça, c'est valable quand je bosses tout seul chez moi sur un projet qui n'est pas géré par un autre. (sinon, je me plis aux règlesdéfinis au départ)
Marsh Posté le 24-09-2003 à 02:35:24
omega2 a écrit : Ca m'étonerait que de tels mamout aient été fait par un seul gars. |
cqfd
Marsh Posté le 24-09-2003 à 02:57:15
personne a prouvé que les mamout étaient lents et maladroit.
Tout ce que je voulais dire par là, c'est que c'est pas des petits programme de rien du tout.
Marsh Posté le 24-09-2003 à 06:58:29
Les tags courts c'est les couples :
Code :
|
et
Code :
|
Y a aussi la syntaxe ASP.
Concernant les noms de variables, effectivement, je range ça dans les conventions. En revanche, le code SQL embarqué dans PHP reste du code SQL. Il s'agit d'autres conventions : celles de SQL justement.
Marsh Posté le 24-09-2003 à 07:16:19
Les HEREDOCS, c'est une syntaxe tirée de Perl. ça permet d'écrire un gros bloc de texte sans se soucier des séquences d'échappement. Voir sur www.php.net, je ne m'en suis jamais servi.
omega2 > Je lis que tu embarques tout ton HTML dans ton PHP. Je réagis en te donnant deux arguments. Dans le monde Java, les applicatifs côté serveur sont construits avec des Servlets. Une Servlet est une classe Java qui traite un ou plusieurs type de requête et envoie une réponse au browser (je fais simple).
Deux problèmes sont apparus : d'abord il est impossible de confier la création d'un telle classe à une Web designer, car la code est pur Java. Ensuite, le code est lourd, et mélange la logique de contrôle - j'entends la récupération des données, le stockage des infos - et la logique d'affichage. Les nombreux out.println("..." ); semblables à des appels à la fonction echo de PHP, y contribuent fortement.
C'est pour cela que les JSPs ont été introduite et permettent de créer la structure de la page avec un éditeur WYSIWYG et de faire rajouter la logique par un développeur Java.
Il me semble que tu programmes tes pages comme des Servlets PHP . Je ne suis pas convaincu que ce soit un bon choix.
Deuxième argument, tiré de la documentation : les appels à echo sont plus lents que du HTML simple. Exemple :
<?php if ($flag) { ?> |
est plus rapide (selon www.php.net) que :
<?php |
Quel avantage trouves-tu à ta manière de faire ?
Marsh Posté le 24-09-2003 à 07:43:37
Citation : 8. Les classes en PHP 4, vous y croyez vous ? |
A fond. La je commence un projet en PHP et je compte bien utilise au max les possibilités offertes par PHP à ce niveau.
Citation : de toutes façons, un projet en php et en équipe, c'est pas réalisable, donc tout le monde s'en fout. |
C'est vrai. D'ailleurs une source sûre m'a confirmé que des sites comme Yahoo et Google ont été développés et sont maintenus par une seule personne.
Marsh Posté le 24-09-2003 à 07:46:43
Sinon pour les "coding standards" en PHP Cherrytree tu peux deja jeter un oeil sur ceux de PEAR => http://pear.php.net/manual/en/standards.php
J'ai trouvé ça aussi => http://alltasks.net/code/php_coding_standard.html
Faut faire le tri et voir ce qui te convient, y'a pas vraiment de standards à proprement parler en PHP.
Marsh Posté le 24-09-2003 à 09:46:08
moi je suis pas trop classes (sur mes développements du moment, je freine un peu à cause de php5)
et noyage du php dans l'html
par contre mes tags courts sont toujours non indentés, et seulement ensuite j'indente le code proprement dit
ça peut paraitre immonde à certains mais on m'a déjà dis plusieurs fois que le code était propre
Code :
|
Marsh Posté le 24-09-2003 à 10:00:49
impulse a écrit : Sinon pour les "coding standards" en PHP Cherrytree tu peux deja jeter un oeil sur ceux de PEAR => http://pear.php.net/manual/en/standards.php |
OK, merci.
Tiens tant que j'y suis, j'ai un p'tit problème bien pénible. J'ai choisi d'encoder mes sources en UTF-8 pour avoir le support complet d'Unicode. Ceci étant, un document UTF-8 convenable commence par le Byte Order Mark, une séquence de trois octets permettant d'identifier le document comme document UTF-8.
Le problème est le suivant : j'ai rangé un certain nombre de variables dans un fichier .php, car ces variables sont globales pour l'application.
database.inc.php
Code :
|
Le problème, c'est la fonction include de PHP. Elle incorpore l'intégralité du fichier, y compris un nouveau Byte Order Mark. Je me retrouve donc avec deux BOMs, de ce fait, j'ai un caractère non imprimable, du plus mauvais effet dans mon HTML généré.
Marsh Posté le 24-09-2003 à 10:21:08
Cherrytree a écrit : Tiré de la documentation : les appels à echo sont plus lents que du HTML simple. Exemple :
|
La première syntaxe est illisible, et difficile à maintenir.
Il y a redondance dans le message.
Perso, je fais comme çà :
<?php |
Enfin dans l'esprit, c'est çà.
C'est généralement le genre de chose que je fait pour généré un tableau HTML.
Pour une meilleur lisibilité, les lignes du tableau ont des couleurs de fond alternée comme sur le forum. Mais il peux y avoir une ligne particulière (par exemple celle sur laquelle l'utilisateur travaille qui à une autre couleur de fond pour la mettre en valeur.
Ca donne un truc comme çà :
|
Oui, c'est pas le plus rapide, mais il est possible d'intervenir sur n'importe quelle partie du code sans avoir à changer la structure.
Par exemple, si un traitement particulier doit être fait dans le cas où $obj_ligne->selected est vrai ou faut, il suffit de l'inclure dans le bloc de code existant.
Alors qu'avec un code comme çà :
<?php if ($flag) { ?> |
il faut reconsidérer beaucoup plus de choses.
D'autre part, cette manière d'écrire est foutrement chiante à commenter lisiblement !
Marsh Posté le 24-09-2003 à 10:27:31
Cherrytree a écrit : database.inc.php
|
Je ne connais pas bien tout ce qui tourne autour d'unicode je fais juste une remarque.
Pour ton fichier database.inc.php, je faisais comme toi au début. Maintenant, au lieu d'utiliser des variables globales pour ce genre d'infos, j'utilise des constantes. C'est plus facile à utiliser dans des fonctions : pas besoin de passer par $GLOBALS ou de les déclarer.
Marsh Posté le 24-09-2003 à 10:31:54
Mara's Dad > je suis complètement d'accord avec toi. La syntaxe alternative ou le PHP revient périodiquement au milieu du HTML, je suis pas fan. Ce topic est justement là pour que chacun exprime ses préférences, avec des explications si possible du même calibre que les tiennes.
Marsh Posté le 24-09-2003 à 10:35:50
the real moins moins a écrit : en php, c'est la fête du slip et l'anarchie. |
Pourquoi pas ?
Marsh Posté le 24-09-2003 à 10:37:22
Merci
En fait, sur les sites sur lesquels j'ai travaillé, il est très très rare que les performances soient dues à la manière d'écrire le code PHP. Les lenteurs viennent beaucoup plus souvent d'une requête SQL baclée ou de problème de ce genre.
A quoi bon gagner 1 miliseconde sur l'éxécution du code PHP s'il passe sont temps à attendre la réponse d'un SGBD ?
Marsh Posté le 24-09-2003 à 10:38:41
Bon, je reprend dans l'ordre:
0. Pour la syntaxe de codage, j'utilise maintenant la syntaxe Java que je trouve la plus lisible (j'ai d'abord commencé avec la syntaxe C)
1. Je rajoute toujours le ; D'une part c'est recommendé partout et d'autre part c'est une chose à penser en moins quand on rajoute un morceau de code par après.
2. j'utilise la syntaxe suivante:
<? |
3. mon HTML est entièrement séparé du php, j'utilise tout le temps des systèmes de template, c'est nettement plus confortable et source de moins d'erreur, notamment les echo qui ont presque disparus de mon code.
4. pas de tag court car utilisation de template
5. je choisi $template->assign(var,'toto');
6. Pas d'utilisation de HEREDOC, cela ne m'apporte rien. Mais je ne passe pas non plus "ma chaine", mais plutôt 'ma chaine' qui évite un parsing inutile.
7. ni l'un ni l'autre, tu n'as aucune différence entre ceux que tu cites. Moi je suis
<?php echo 'ceci est un '.$row['entry_id'].'.';?> |
8. les class en PHP4, oui tant qu'elles sont réduites. Pour des gros objets, le PHP4 est trop lent. Par contre, les class en PHP5, oui, j'y crois à fond.
9. echo est plus optimisé (selon R.L.) que printf et à privilégier dans tous les cas de figure.
10. oui, je mets des parenthèses, excepté pour echo.
Marsh Posté le 24-09-2003 à 10:46:15
Sinon :
- one true brace. (les deux accolades avec retour à la ligne)
- pas d'indentation pour "<?php", retour à la ligne.
- en général tout en php avec des echo, sauf si y'a juste une ligne de php dans la page.
- tags courts ? Si c'est "<?" à la place de "<?php", non.
- point-virgule et espace avant "?>".
- jamais utilisé HEREDOCS.
- deuxième solution, avec tous les points et guillemets qu'il faut dans les strings.
- les classes j'y crois mais je m'en sers pas.
- plutôt echo.
- pour echo pas de parenthèses, pour les autres oui.
Marsh Posté le 24-09-2003 à 10:48:55
Taz a écrit : excellent ce topic |
Marsh Posté le 24-09-2003 à 10:53:17
Cherrytree a écrit : Un exemple concernant Visual C++ permet d'illustrer mon propos. Aussi bien en Java qu'en C++, un bloc est délimité par des accolades. Cependant, la mise en place de celles-ci diffère.
|
Marsh Posté le 24-09-2003 à 10:54:22
ReplyMarsh Posté le 24-09-2003 à 10:59:05
Citation : En fait, sur les sites sur lesquels j'ai travaillé, il est très très rare que les performances soient dues à la manière d'écrire le code PHP. Les lenteurs viennent beaucoup plus souvent d'une requête SQL baclée ou de problème de ce genre. |
Tout a fait d'accord. Deja faut faire un truc qui marche, ensuite si il y a besoin et si ça en vaut vraiment la peine il faut optimiser.
Citation : 3. mon HTML est entièrement séparé du php, j'utilise tout le temps des systèmes de template, c'est nettement plus confortable et source de moins d'erreur, notamment les echo qui ont presque disparus de mon code. |
Les templates c'est bien. Enfin c'est ce que je pensais avant de lire des discussions tres interessantes sur les forums de sitepoint. Maintenant je suis plus sur du tout.
Qques liens interessants sur PHP et les templates =>
http://www.sitepointforums.com/sho [...] adid=67849
http://www.sitepoint.com/article/1218
http://www.phppatterns.com/index.p [...] iew/4/1/1/
Marsh Posté le 24-09-2003 à 11:06:44
Moi non plus, je ne vois pas ce qu'il y a de drôle. Tu te bornes sans doute à utiliser les fonctions les plus adaptées à ton problème. Personnellement, je cherche aussi à produire un code uniforme, lisible.
Marsh Posté le 24-09-2003 à 11:14:33
impulse a écrit : [quote] |
J'avais déjà lu partie des tests de Vincent, et il prends les chose sous l'angle qui l'arrange le mieux. Soit il stocke toutes ses variables pour ne les ressortir qu'à la fin, ce qui implique une augmentation de la mémoire nécessaire, soit il utilise des systèmes de class plus ou moins complexes, ce qui ralentit globalement son système (avec php4). Franchement, un bon système de template te fais perdre très peu de temps à l'exécution mais est nettement plus simple à maintenir et à utiliser pour un webdesigner.
Marsh Posté le 24-09-2003 à 11:24:41
intéressant, ce topic, j'y met mon drapeau pour donner ma vision des choses un peu plus tard.
Marsh Posté le 24-09-2003 à 11:26:16
Citation : J'avais déjà lu partie des tests de Vincent, et il prends les chose sous l'angle qui l'arrange le mieux. Soit il stocke toutes ses variables pour ne les ressortir qu'à la fin, ce qui implique une augmentation de la mémoire nécessaire, soit il utilise des systèmes de class plus ou moins complexes, ce qui ralentit globalement son système (avec php4). Franchement, un bon système de template te fais perdre très peu de temps à l'exécution mais est nettement plus simple à maintenir et à utiliser pour un webdesigner. |
Peut-etre, mais il est loin d'etre le seul a dire que "les templates c'est mal". Pour ma part, j'ai deja utilise patTemplate et franchement je trouve ça tres pratique mais ça n'empeche pas que je ne sais pas si je vais utiliser un moteur de templates pour le projet que je viens de commencer (et si j'en utilise un, lequel?)...
Marsh Posté le 24-09-2003 à 12:02:44
Cherrytree a écrit : |
bah comme toujours: un coup de indent
Marsh Posté le 24-09-2003 à 12:31:42
impulse a écrit : |
Ca me donne mal à la tête ces histoires de templates?
Marsh Posté le 24-09-2003 à 13:43:34
Cherrytree a écrit : Les HEREDOCS, c'est une syntaxe tirée de Perl. ça permet d'écrire un gros bloc de texte sans se soucier des séquences d'échappement. Voir sur www.php.net, je ne m'en suis jamais servi.
|
Au contraire, je n'embarque quasiment aucun code html dans mes fichiers php, les seuls trucs que j'ai de fixe dans mes fichiers php, ce sont des liens et des baslises images.
Tout le reste est mis dans un/des fichier(s) de modèles.
Je me suis fait plusieurs classes pour gérer ce système. (une seule classe est utilisé par l'extérieur, les autres étant utilisé par cette classe là pour des sous partie de l'ensemble)
mais pour moi, l'avantage principal a ne pas mettre toute une quirielle de "?> code html <?php" au milieu du code, est un problème de clarté. Je trouves plus clair de faire un echo quand on en a besoin.
La seule page où j'utilises des "?> code html <?php" au milieu du code, c'est pour une simple page de frame pour mon chat et c'est juste que le code php fait moins de 20% de la taille du fichier et qu'il y a quasiment aucun test sur cette page là et strictement aucune boucle.
Marsh Posté le 24-09-2003 à 14:00:53
impulse a écrit :
|
Personellement, je me suis fait mon propre système, il est peut être un poil mon souple qu'un système de template hyper complet, il est surement moins rapide que d'autres systèmes de template, mais au moins, je sais ce qu'il fait et si j'ai besoin d'une nouvelle fonctionalité, je sais exactement ce que je dois modifier.
A mon avis, les discutions du genre "les templates c'est mal" ou "les templates c'est l'idéal" sont de fausses discution. Il faut juste savoir ce qu'on souhaite comme affichage dans son site :
un seul modèle d'affichage => template pas nécéssaire
plusieurs modèles d'affichages => template obliguatoire
un changement très facile et centralisé de l'habillage du site => template conseillé.
Marsh Posté le 24-09-2003 à 14:31:34
ReplyMarsh Posté le 24-09-2003 à 14:44:08
Cherrytree a écrit : Une question en passant : MVC en PHP, c'est possible ? |
MVC ?
Marsh Posté le 24-09-2003 à 15:07:24
Cherrytree a écrit : Une question en passant : MVC en PHP, c'est possible ? |
ben les templates c'est un peu ça.
C->ton script en php
V->template (ou un script php inclus qui n'a que des <?=$truc?>
M->qques objets à la con ou des betes variables
Marsh Posté le 24-09-2003 à 15:08:16
Freekill a écrit : |
http://c2.com/cgi/wiki?ModelViewController
Marsh Posté le 24-09-2003 à 15:14:52
Cherrytree a écrit : Une question en passant : MVC en PHP, c'est possible ? |
Tout est possibe, tout est réalisabe, c'est le jeu de la Vie
Heu, idem, c'est quoi MVC ?
Google page 1 :
- www.mvc.co.uk
- Model-View-Controller
- Missouri Valley Conference
- Manchester Visualization Centre
- Mobile VideoCommunication
- Mountain View College
Bon, "Model-View-Controller" est le plus cité, et çà m'à l'air d'être encore une histoire de partern / template non ?
Marsh Posté le 24-09-2003 à 15:18:48
Citation : Une question en passant : MVC en PHP, c'est possible ? |
http://phpmvc.net/
http://www.phppatterns.com/index.p [...] ew/19/1/1/
Marsh Posté le 24-09-2003 à 01:09:21
Bon, c'est un sujet pour gens pointilleux. En gros, j'aimerais que nous discutions des conventions que nous appliquons sur le code PHP.
En ce qui me concerne, avant de coder véritablement avec un langage que j'apprends, je passe toujours un certain temps à rechercher la manière adéquate de coder.
Un exemple concernant Visual C++ permet d'illustrer mon propos. Aussi bien en Java qu'en C++, un bloc est délimité par des accolades. Cependant, la mise en place de celles-ci diffère.
En Java, on écrira plutôt
tandis qu'en C++, ce sera plutôt
Dès lors, prenons le cas du programmeur Java qui utilise Visual C++. Ce produit, entre autres, génère du code pour simplifier la tâche du développeur. Le code généré par Visual C++ suit la convention que j'ai exposé plus haut. Notre programmeur Java a tout intérêt à adhérer à la convention choisie dans Visual C++, s'il veut produire un code d'aspect cohérent.
Justement j'aime que mon code soit bien présenté, uniforme.
Quelques particularités de PHP appellent une réflexion sur la manière de coder.
1. La balise ?> termine un bloc d'instructions, par conséquent, on peut se passer du ';' terminal. Quel usage préconisez-vous ?
2. Disposition des balises <?php ?> : considérez-vous ces balises comme des marqueurs de début de bloc, du point de vue de l'indentation ? Autrement dit, préférez-vous :
ou :
ou bien :
ou encore autre chose ?
3. Quel rapport tissez-vous entre le HTML (hors code PHP) et les blocs PHP ? Êtes-vous plutôt :
<body>
<h1>Salut !</h1>
<?php while ($row = mysql_fetch_assoc($result)) {
//du code.
?>
</body>
ou plutôt :
<body>
<h1>Salut !</h1>
<?php while ($row = mysql_fetch_assoc($result)) {
//du code.
?>
</body>
4. Les tags courts, pour ou contre ?
5. Considérons les formes suivantes :
Vous choisissez laquelle ? Ou quelle autre encore ?
6. Les chaînes. Utilisez-vous HEREDOCS ? Passez-vous toutes vos chaînes sous forme "ma chaîne" ou essayez-vous d'utiliser le système le plus adapté, quitte à rendre votre code plus pointu (un poil moins flexible) ?
7. Les chaînes toujours. Vous êtes plus :
ou bien plus :
8. Les classes en PHP 4, vous y croyez vous ?
9. Plutôt print() ou echo() ?
10. Pour les structures du langages, echo, print, die, exit... Vous mettez des parenthèses ?
On peut aussi discuter d'autres trucs, si vous voulez. Ne dites pas que c'est de la merde. Un code qui a du style, c'est important.
Message édité par Cherrytree le 24-09-2003 à 01:14:51
---------------
Le site de ma maman