--- name: framework:make:invalide description: Génère classe Invalide (exceptions métier) license: MIT version: 1.0.0 --- # Framework Make Invalide Skill ## Description Génère une classe Invalide pour gérer les exceptions métier d'une entité. La classe Invalide encapsule l'entité et fournit des factory methods pour créer des exceptions spécifiques au contexte métier. ## Usage ``` Use skill framework:make:invalide Vous serez invité à fournir : - Le nom de l'entité (ex: Product, User, Order) ``` ## Templates - `Invalide/UtilisateurInvalide.php` - Template de classe Invalide ## Variables requises - **{EntityName}** - Nom de l'entité en PascalCase (ex: Utilisateur, Product) - **{entityName}** - Nom de l'entité en camelCase (ex: utilisateur, product) - **{namespace}** - Namespace du projet (défaut: App) ## Dépendances - Requiert que l'entité existe dans `src/Entity/{EntityName}.php` ## Outputs - `src/Invalide/{EntityName}Invalide.php` ## Workflow 1. Demander le nom de l'entité (EntityName) 2. Vérifier que l'entité existe dans `src/Entity/{EntityName}.php` - Si non : arrêter et demander de créer l'entité d'abord 3. Générer la classe Invalide depuis le template : - Remplacer `{EntityName}` par le nom fourni - Remplacer `{entityName}` par la version camelCase 4. Afficher le fichier créé ## Patterns appliqués ### Classe Invalide - Classe `final` - Constructeur privé - Factory statique `new()` pour instanciation - Propriété privée de type entité - Méthodes factory statiques pour exceptions spécifiques ## Exemple ```bash Use skill framework:make:invalide # Saisies utilisateur : EntityName: Product # Résultat : ✓ src/Invalide/ProductInvalide.php ``` Fichier généré : ```php stock < $quantity) { throw ProductInvalide::carStockInsuffisant( demande: $quantity, disponible: $this->stock ); } // ... } } ``` ## Notes - Les méthodes factory d'exceptions doivent commencer par `car` (convention) - Les messages d'exception ne doivent pas finir par un point - Les messages doivent inclure le maximum de contexte - Privilégier les exceptions standard PHP (\InvalidArgumentException, \DomainException) - Respecte le principe "fail fast"