Refactorisation du code
Objectifs pédagogiques
- Organiser le code dans des fonctions réutilisables.
- Clarifier la structure du projet pour faciliter sa maintenance.
- Réduire la duplication et préparer à une meilleure extensibilité.
Exercice pratique
- Créer un fichier
functions.php. - Définir une fonction
loadTasks()qui lit le contenu du fichier JSON et retourne un tableau. - Définir une fonction
saveTasks(array $tasks)qui écrit un tableau dans le fichier JSON. - Définir une fonction
renderTasks(array $tasks)qui affiche les tâches dans une liste HTML. - Inclure
functions.phpdansindex.phpavecrequire. - Utiliser ces fonctions dans
index.phppour alléger le code principal.
Correction
Visualiser la correction
Fichier functions.php
php
<?php
function loadTasks(): array
{
if (!file_exists('tasks.json')) {
return [];
}
$json = file_get_contents('tasks.json');
return json_decode($json, true) ?? [];
}
function saveTasks(array $tasks): void
{
$json = json_encode($tasks, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
file_put_contents('tasks.json', $json);
}
function renderTasks(array $tasks): void
{
if (count($tasks) === 0) {
echo "<p>Aucune tâche pour le moment.</p>";
return;
}
echo "<ul>";
foreach ($tasks as $task) {
echo "<li>{$task}</li>";
}
echo "</ul>";
}Fichier index.php
php
<?php
require 'functions.php';
$tasks = loadTasks();
renderTasks($tasks);Explications
- La logique métier est isolée dans des fonctions claires et nommées.
loadTasks()gère la lecture du fichier et évite des erreurs si le fichier est absent.saveTasks()centralise l’écriture des données.renderTasks()se charge de l’affichage, ce qui clarifie la structure du code principal.- Ce découpage permettra, par la suite, de mieux organiser le projet en plusieurs fichiers.