IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Date de publication : 05/02/2008 , Date de mise à jour : 09/04/2009


II. Constat
II-A. Le code
II-B. La structure
II-C. Conclusion


II. Constat


II-A. Le code

Exemple de code mixte

<script type="text/javascript">
var tab = new Array();
</script>
<?php
$i = 0;
$result = mysql_query("SELECT * FROM news WHERE date>'$date'");
while ($row = mysql_fetch_assoc($result)) {
    $i++;
	echo "tab[$i] = '".$row['date']." ".$row['text']."'";
}
?>
Voila un exemple très simple d'un page prenant des données sur une base MySQL, à travers des fonctions PHP, qui sont transmises à Javascript à travers un echo. Beaucoup des choses en peu de ligne, mais surtout, aucune évolution possible, et très vite, aucune compréhension possible.

En étudiant un peu ce code, nous voyons

<script type="text/javascript">
var tab = new Array();
</script>
qui ne concerne que l'affichage

$result = mysql_query("SELECT * FROM news WHERE date>'$date'");
qui ne concerne que les données

while ($row = mysql_fetch_assoc($result)) {
    $i++;
	echo "tab[$i] = '".$row['date']." ".$row['text']."'";
}
qui relie maladroitement les deux en utilisant des propriétés propres à l'affichage (le js) et aux modèle de données (la fonction mysql_fetch_assoc). Il serait impossible avec ce même code de simplement l'adapter à une sortie en PDF ou à un accès aux données d'un fichier XML.


II-B. La structure

On retrouve souvent des projets avec un paquet de fichiers dont le découpage reflète la structure que le développeur souhaitait donner à son programme. Or, la structure des fichiers est TOTALEMENT INDEPENDANTE de la structure du programme. Une "page" correspond à une action souhaitée, et pas à un ou pluieurs fichiers. Cette façon de penser implique souvent de nombreuses redirections. Voici un exemple très courant :
Exemple de redirection

if ( ! $_SESSION['connected'] ) {
    header('location: login.php');
}
De même, on retrouve souvent un fichier fonction.php avec de nombreuses variables globales.
Exemple de fonction

function getdata() {
    global $db, $_SESSION, $_GET, $_POST.... ;
    //code
    return;
}
Une page est ainsi constituées de nombreux fichiers transmettant des variables répétitives de manière peu rigoureuse. Il devient très vite impossible de retracer le cheminement d'une page ou l'origine et la déclaration d'une variable. Les variables globales peuvent régulièrement prendre différentes valeurs à différents stades de l'exécution du script.


II-C. Conclusion

La conception d'un programme doit être penser de manière à découper les différents acteurs et NON les différentes actions. C'est comme pour un film, le montage du film se fera en fonction des actions de façon à donner un sens au film, mais le réalisateur filmera souvent plusieurs scènes avec un même acteur afin de réduire au maximum les changements d'acteurs, de décors...

 

Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © Guillaume Affringue. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.