Code : Tout sélectionner
racine du site
|-home
|-admin(partie admin du site)
|-includes(mes fonctions, mes fichiers indispensables au bon fonctionnement et fonctionnant en arriere pla)
|-config(fichier de configuration de mon site
|-templates
||-design classés par id(01,02,03, etc)
|||-css
|||-images
||-guides(fichier templates)
|-language(mon fichier de language contenant un tableau $lang)
|.htaccess
|default.php
|mes pages.php(ce n'est pas le vrai nom de mes autre fichiers :p, c'est juste pour dire que tout est la est que mon index c'est default.php...)
A l'époque à laquelle nous vivons, les entreprises ne se contentent plus vraiment d'une application fonctionnelle réalisée sur le pouce.
On ne cesse d'entendre l'éternel refrain : "ton code est-il maintenable ?"
Mais tout d'abord, à quoi ressemble du code PHP maintenable ?
Quels sont vos petits trucs pour avoir du code clair, propre, facile à débugger par vous-même ou par un autre développeur ?
Ces petits trucs peuvent être divers, ça peut toucher à la fois les norms de codage, les choix préférés pour le développement, les outils utilisés, etc.
Quelques exemples :
1- vos fichiers sont-ils un mix de HTML et de PHP ? du PHP pur avec le code HTML écrit à base de "echo" ? des fichiers HTML, du code PHP et un moteur de template au milieu ? autre chose encore ?
2- essayez-vous d'avoir du code ne dépassant pas 80 colonnes ? comment scindez-vous un appel de fonction qui est trop long ? et une requête SQL ?
3- faites-vous en sorte que le HTML généré soit indenté pour faciliter le debug ? comment procédez-vous ?
4- organisez-vous un fichier PHP "basique" en parties ?
5- utilisez-vous des fichiers ne contenant que des données figées ? en PHP ? en XML ? en texte ?
etc.
$stUrl = $this->stUrlDir.
encUrl($GLOBALS['tr']->trGetWord('collection')).'/'.
encUrl($GLOBALS['tr']->trGetWord('sexe'.$stSexe)).'/'.
encUrl($GLOBALS['tr']->trGetWord($stSegmen)).'/'.
encUrl($GLOBALS['tr']->trGetWord('menu1item'.$mxVal));
ex pour une requete MySQL :
$stColonne = 'col1, col2, col3, col4';
$stWhere = 'WHERE col1=50 AND col2=col3'
$stOrder = 'ORDER BY col1'
$stReq = "SELECT $stColonne from $stTable $stWhere $stOrder";
3-oui !Oui mais à la base, les templates sont là pour diviser l'aspect programmation de l'aspect graphisme par exemple pour permettre à un graphiste de ne pas avoir à se plonger dans du code qu'il ne comprend pas.1-eviter de melanger HTML/XHTML/PHP/JS/.... le coup des templates est + propre, c'est un avis perso car je connais un tres bon programmeur qui n'hesite pas a melanger.
Sur ce point j'ai justement pas mal de soucis.3-oui !
le code HTML que tu generes doit etre parfaitement propre, ca peut paraître un detail pour certain mais montre la maitrise du programmeur !
echo "<HTML>\n";
echo " <BODY>\n";
echo " <HEAD>\n";
echo " </HEAD>\n";
echo " </BODY>\n";
echo "</HTML>\n";
Autrement dit : une gestion de l'indentation directement dans le code (ce qui est bien lourd) et le rajout de \n à la fin de chaque ligne (ou la nécessité de passer par une fonction perso qui le fait tout seul).Je parle de regroupement dans la page : récupérer toutes les variables POST ou GET au début, déclarer toutes les variables ensemble, mettre tous les include au début, etc... Ces cas sont les plus flagrants quand on veut un minimum de propreté dans son code mais il peut y en avoir d'autres.4-tu parles de bloc de code servant a faire foncitonner des parties distinctes ?
oui, bien sur.
Si ta page contient des données en dur, par exemple une liste déroulante, est-ce que vous préférez lister toutes les options à afficher directement dans le code ? au début du code dans un tableau ? dans un fichier php à part qu'on inclut ? dans un fichier XML à part ?5-pas compris
Pour avoir une indentation, tu peux faire comme ceci (ca reste lourd à gérer, mais un poil plus pratique que d'ajouter des espaces je trouve) :[Autrement dit : une gestion de l'indentation directement dans le code (ce qui est bien lourd) et le rajout de \n à la fin de chaque ligne (ou la nécessité de passer par une fonction perso qui le fait tout seul).echo "<HTML>\n"; echo " <BODY>\n"; echo " <HEAD>\n"; echo " </HEAD>\n"; echo " </BODY>\n"; echo "</HTML>\n";
Bref, ça me plait pas du tout cette façon de procéder.
echo "<HTML>\n";
echo "\t<BODY>\n";
echo "\t\t<HEAD>\n";
echo "\t\t</HEAD>\n";
echo "\t</BODY>\n";
echo "</HTML>\n";
<?
while(condition) {
?>
<partie html fixe avec quelques <?=$variable ?> si besoin>
<?
}
?>
Je trouve ça non seulement plus rapide à écrire mais aussi plus propre, non?
...;
echo "chaine\n";
...;étant strictement équivalent à ...;
?>chaine
<?php
...;je trouve dommage de se priver de la seconde syntaxe :<?php
// contrôle
class Film {
var $titre;
var $auteur;
function Film($titre,$auteur) {
$this->titre = $titre;
$this->auteur = $auteur;
}
}
$titre = "mon titre";
$films = array(
new Film("L'etrange noel de monsieur Jack", "Tim Burton"),
new Film("Beetlejuice", "Tim Burton (he oui...)"),
new Film("Edward aux mains d'argent", "Tim Burton (qui a dit que j'étais monomanique ?)")
);
// vue, modèle
include "MonModele.php";
?>
MonModele.php<html>
<head>
<title><?=$titre?></title>
</head>
<body>
<h1><?=$titre?></h1>
<table>
<tr><th>Titre</th><th>Auteur</th></tr>
<?foreach($films as $film):?>
<tr><td><?=$film->titre?></td><td><?=$film->auteur?></td></tr>
<?endforeach?>
</table>
</body>
</html>
Sympa comme langage de template : le moteur est fiable, rapide, inclus en standard quelque soit le script, et la séparation code/présentation est respectée. Juste histoire de rappeler que faire du propre n'est pas une question de moteur, mais d'utilisation du langage
C'est vrai, j'approuve, surtout quand on y rajoute une once de javascript :un fichier php comprenant du html est systématiquement bordélique.
<input type="text" name="prix_max_bar" value="<? echo ($_POST[prix_max_bar])? $_POST[prix_max_bar] : "Prix max" ?>" onFocus="if(this.value=='Prix max') this.value='';" onBlur="if(this.value=='') this.value='Prix max';" size="7"> €
C'est-y pas beau tout plein?echo "<option value="$r[id_secteur]">";
qui te dégage toute différenciation entre les éléments, les attributs, les valeurs et les variables php... et en plus il faut échapper toutes les quotes, génial echo "<OPTION value='".$valeur."'>".$description."</OPTION>";
Mais en effet, ça fait sauter la coloration de l'éditeur pour le html...