Bonne pratique pour débutant : on sépare ce qu’on affiche de ce qu’on programme

Comme pour le moment, j’enseigne des rudiments du PHP à mes étudiants, je parle pour le PHP et je donne un exemple en PHP mais grosso merdo, c’est pareil partout (I suppose).

La bonne pratique : on sépare ce qu’on affiche, ce qu’on voit (partie de code en HTML) et ce qu’on programme, ce qu’on code, ce qu’on appelle dans la DB (partie de code en PHP).

Prendre dès le début de bonnes habitudes

Pourquoi ? Pour prendre de bonnes habitudes. Pour avoir l’habitude de scinder eu deux : la vue d’un côté et la programmation de l’autre. 
Également parce qu’il faut penser à l’éventualité d’une collaboration avec un designer ou un intégrateur. Ce genre de profil ne saura pas forcément repérer facilement où se trouve les morceaux à afficher parmi tout le code. Comment va-t-il réussir à le mettre en forme s’il passe 10 ans à le chercher ? On le comprend bien, ça risque d’être sacrément la merde pour lui.
Enfin parce que quand les newbies vont voir le MVC, la différence entre model et view sera beaucoup plus simple à comprendre.

Séparer le PHP d’affichage et le PHP de programmation

Ici, on va faire en sorte de mettre le PHP de programmation au-dessus du HTML et on place le PHP d’affichage dans la partie HTML.

Quand on commence à faire son code en PHP, disons un bout de code avec une condition, au début on serait tenté d’écrire ça comme ça :

<?php 
if(isset($_POST['age'])){
$age = $_POST['age'];
$genre = $_POST['genre'];
if(is_int($age)){
if($age &gt;= 18){
echo "Vous êtes majeur";
}else{
echo "Vous êtes mineur";
}
}else{
echo "Veuillez renseigner un nombre entier";
}
if($genre == "femme"){
echo " et vous êtes une femme";
}else{
echo " et vous êtes un homme";
}
}
?>

C’est pas faux, ça fonctionne, tout s’affiche correctement. Mais on constate que le texte à afficher est noyé au milieu de code.

En séparant le PHP du HTML, ça donne ça :

<?php
if(isset($_POST['age'])){
$age = $_POST['age'];
$genre = $_POST['genre'];
if(is_int($age)){
// on va stocker dans une variable $message le texte que nous souhaitons afficher.
if($age >= 18){
$message = "Vous êtes majeur";
}else{
$message = "Vous êtes mineur";
}
}else{
$message = "Veuillez renseigner un nombre entier";
}
if($genre == "femme"){
$message .= " et vous êtes une femme";
}else{
$message .= " et vous êtes un homme";
}
}
?>
// fin de la partie PHP
// début de la partie HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bonnes pratiques php</title>
</head>
<body>
<?php
if (isset($message)){?>
<p><?=$message?></p>
<?php
}else{
?>
<form action="" method="post">
<input type="text" name="age" value="">
<select name="genre">
<option value="femme">féminin<option value="homme">masculin</select>
<input type="submit" name="form" value="submit">
</form>
<?php
}
?>
</body>
</html>

Et c’est quand même un poil plus lisible.

Après je n’ai pas dit que c’était la meilleure manière de coder. Je dis simplement que quand on débute en PHP, c’est mieux d’apprendre à séparer les choses et bien s’organiser plutôt que de continuer à nager dans un gros bordel.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.