37 lines
2.2 KiB
Markdown
37 lines
2.2 KiB
Markdown
# API publique et API interne de netslim-core
|
|
|
|
Ce document définit la frontière de support du package `netslim-core`.
|
|
|
|
## API publique
|
|
|
|
Les applications consommatrices peuvent dépendre des éléments suivants :
|
|
|
|
- le namespace `Netig\Netslim\Kernel\Runtime\...` nécessaire au bootstrap, au runtime et à la découverte des modules ;
|
|
- les classes `*Module` exposées par les modules partagés (`IdentityModule`, `SettingsModule`, `AuditLogModule`, `NotificationsModule`, `TaxonomyModule`, `MediaModule`, `KernelModule`) ;
|
|
- les interfaces applicatives explicitement exposées par les modules (`Identity\Application\*ServiceInterface`, `Settings\Application\SettingsServiceInterface`, `AuditLog\Application\AuditLogServiceInterface`, `Notifications\Application\NotificationServiceInterface`, `Taxonomy\Application\TaxonomyServiceInterface`, `Media\Application\MediaServiceInterface`) ;
|
|
- les contrats publics sous `Netig\Netslim\*/Contracts/` ;
|
|
- les conventions documentées de `config/modules.php`, `public/index.php` et des chemins runtime résolus côté projet consommateur ;
|
|
- les layouts et partials Twig documentés sous `@Kernel/...` quand l'application choisit de les réutiliser.
|
|
|
|
## API interne
|
|
|
|
Les éléments suivants doivent être considérés comme des détails d'implémentation du package :
|
|
|
|
- tout `Infrastructure/` (repositories PDO, stockage local, wiring DI, maintenance post-migration) ;
|
|
- tout `Application/UseCase/` et les services applicatifs non documentés comme contrats ;
|
|
- les entités de domaine utilisées en interne par les modules ;
|
|
- les vérifications de démarrage propres aux modules ;
|
|
- les templates Twig non documentés comme points d'intégration.
|
|
|
|
Une application consommatrice ne devrait pas dépendre directement de ces éléments internes.
|
|
|
|
## Règle pratique
|
|
|
|
Quand un projet applicatif a besoin d'une capacité partagée, il doit préférer :
|
|
|
|
1. un contrat public existant dans `Contracts/` ;
|
|
2. à défaut, une extension documentée du runtime ou d'un module ;
|
|
3. en dernier recours, une évolution du core qui ajoute un nouveau point d'intégration public.
|
|
|
|
Éviter de se brancher directement sur des classes internes permet de garder le core petit, lisible et évolutif.
|