🏗️ Mini-projet — Catalogue Produits OOP
Appliquer la POO PHP 8, Composer et la structure Symfony à un catalogue produits.
📋 Objectif
Créer un petit catalogue produits en PHP 8 pur (sans framework), avec POO, interfaces, traits et Composer. Ce projet servira de base pour les modules suivants où on le migrera vers Symfony.
🎯 Fonctionnalités à implémenter
1.
Interface
ProductInterface avec getPrice(), getName(), getSku()
2.
Trait
TimestampableTrait (createdAt, updatedAt)
3.
Classe
Product avec constructor promotion + enum CategoryEnum
4.
Classe
ProductCatalog — ajouter, filtrer, trier les produits
5.
Autoloading PSR-4 via Composer + script de démo CLI
📁 Structure attendue
mini-projet-sf01/
├── src/
│ ├── Contract/
│ │ └── ProductInterface.php
│ ├── Enum/
│ │ └── CategoryEnum.php
│ ├── Trait/
│ │ └── TimestampableTrait.php
│ ├── Entity/
│ │ └── Product.php
│ └── Service/
│ └── ProductCatalog.php
├── public/
│ └── index.php (démo HTML)
├── bin/
│ └── catalog.php (CLI)
└── composer.json
✅ Critères de réussite
composer dump-autoloadfonctionne sans erreur- Les 5 classes/interfaces implémentées avec types stricts PHP 8
- Le trait TimestampableTrait utilisé dans Product
- Le catalogue filtre par catégorie et trie par prix
- Script CLI affiche les produits formatés