Tp 3 php functions utils blogpoo
Thème :
Junior
1 vues ·6/10 leçons05 - Refactoring des Contrôleurs
Après avoir créé nos fonctions utilitaires, l’étape finale consiste à nettoyer nos contrôleurs. L’objectif est de supprimer tout le code SQL “sale” des fichiers PHP à la racine pour ne laisser que de la logique métier simple.
Exemple : Avant vs Après (index.php)
Avant (Code Procédural direct)
// Requête comptant le total d'articles
$totalQuery = $pdo->query('SELECT COUNT(*) FROM articles');
$totalItems = (int)$totalQuery->fetchColumn();
// ... logique de calcul offset ...
$sql = '
SELECT
articles.*,
(SELECT COUNT(*) FROM comments WHERE comments.article_id = articles.id) AS comment_count
FROM articles
ORDER BY articles.created_at DESC
LIMIT :limit OFFSET :offset
';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':limit', $itemsPerPage, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll();
Après (Utilisation des fonctions)
// Requête comptant le total d'articles
$totalItems = countArticles();
// ... logique de calcul offset ...
$articles = findAllArticles($itemsPerPage, $offset);
Explications Détaillées
1. Pourquoi est-ce mieux ?
- Lisibilité : Le contrôleur ne fait plus que 3 lignes au lieu de 15. On comprend tout de suite ce que fait le code (
countArticles,findAllArticles). - DRY (Don’t Repeat Yourself) : Si nous décidons demain de changer le nom de la table
articlesenposts, nous n’aurons qu’à modifier un seul fichier (app/functions/article.php) au lieu de modifier 10 contrôleurs différents. - Maintenance : Si une erreur SQL survient, nous savons exactement où elle se trouve.
2. Centralisation des vérifications (helpers.php)
Nous avons également créé des fonctions pour simplifier la sécurité au début de chaque fichier :
// Au lieu de :
if (!isset($_SESSION['auth']) || $_SESSION['auth']['role'] !== 'ADMIN') {
header('Location: index.php');
exit();
}
// On écrit simplement :
checkAdmin();
3. Conclusion de la Phase 3
Ce refactoring marque la fin de la programmation “spaghetti” où le SQL était mélangé au HTML et à la logique. Nous avons maintenant une structure modulaire :
- Les Fonctions (
app/functions/) gèrent les données. - Les Contrôleurs (racine) gèrent la logique et les variables.
- Les Vues (
resources/views/) gèrent l’affichage.
C’est la base indispensable pour passer sereinement à la Programmation Orientée Objet (POO) !
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur 05 - Refactoring des Contrôleurs. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.