Skip to content

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 ​

  1. Créer un fichier functions.php.
  2. Définir une fonction loadTasks() qui lit le contenu du fichier JSON et retourne un tableau.
  3. Définir une fonction saveTasks(array $tasks) qui écrit un tableau dans le fichier JSON.
  4. Définir une fonction renderTasks(array $tasks) qui affiche les tâches dans une liste HTML.
  5. Inclure functions.php dans index.php avec require.
  6. Utiliser ces fonctions dans index.php pour 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.