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.