Refatoring : Working state

This commit is contained in:
julien
2026-03-16 15:08:48 +01:00
parent 664d74cd69
commit 3ad3c3d0b7
50 changed files with 69 additions and 331 deletions

View File

@@ -429,8 +429,8 @@ Qui assemble les dépendances ? PHP-DI dans `config/container.php`. Il résout a
// Extrait de config/container.php
// Binding interface → implémentation : PHP-DI injecte PostRepository partout où
// PostRepositoryInterface est demandé. PostService lui-même est résolu par autowiring.
PostRepositoryInterface::class => autowire(PostRepository::class),
PostServiceInterface::class => autowire(PostService::class),
PostRepositoryInterface::class => autowire(PdoPostRepository::class),
PostServiceInterface::class => autowire(PostApplicationService::class),
```
> 💡 Pour ajouter un nouveau service : créer la classe avec ses dépendances typées en constructeur, puis déclarer le binding interface → classe dans `config/container.php`. Si toutes les dépendances sont elles-mêmes typées sur des interfaces déjà liées, PHP-DI résout tout automatiquement — aucune factory à écrire.
@@ -873,8 +873,8 @@ Les services dépendent des interfaces, jamais des classes concrètes. Cela appo
```php
// config/container.php
PostRepositoryInterface::class => autowire(PostRepository::class),
PostServiceInterface::class => autowire(PostService::class),
PostRepositoryInterface::class => autowire(PdoPostRepository::class),
PostServiceInterface::class => autowire(PostApplicationService::class),
```
**Factories scalaires** — pour les dépendances qui ont besoin de paramètres issus de `.env` ou du système de fichiers (PDO, Twig, Monolog) :
@@ -979,7 +979,7 @@ DuplicateEmailException — adresse e-mail déjà utilisée
WeakPasswordException — mot de passe inférieur à 8 caractères
```
Elles sont levées par `UserService` (`DuplicateUsernameException`, `DuplicateEmailException`, `WeakPasswordException`) et par `AuthService` et `PasswordResetService` (`WeakPasswordException`), puis attrapées dans les contrôleurs via un seul bloc `catch(\InvalidArgumentException)` : le message de l'exception est transmis directement au flash et affiché dans le formulaire.
Elles sont levées par `UserService` (`DuplicateUsernameException`, `DuplicateEmailException`, `WeakPasswordException`) et par `AuthApplicationService` et `PasswordResetApplicationService` (`WeakPasswordException`), puis attrapées dans les contrôleurs via un seul bloc `catch(\InvalidArgumentException)` : le message de l'exception est transmis directement au flash et affiché dans le formulaire.
### 5.9 Gestion des erreurs et messages flash