anis-saied / user-core-php
Core user domain logic (framework agnostic)
v1.0.0
2026-01-27 09:02 UTC
Requires
- php: >=8.2
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12
README
Core domain User en PHP, framework-agnostic, basé sur DDD et SOLID.
- Core user domain logic, framework agnostic.
- package core agnostique
Principles
- Clean Architecture
- DDD (light)
- PSR standards
- No framework dependency
📦 Installation
composer require anis-saied/user-core-php
Architecture
- Domain : logique métier pure
- Application : cas d’usage
- Infrastructure : implémentations techniques
- tests : unitaires et intégration
- docs : diagrammes UML (PlantUML)
User
- le role de user dans ce package (user-core) est métier et non pas technique
- donc il ne doit pas mentionner des détails technique comme
- les timestamps (created_at, updated_at)
- le domaine doit etre pure business logic, pas persistence
- dans laravel/Symphony, on pourra ajouter timestamps coté model/ORM
- le core doit rester agnostique
Installation
composer require anis-saied/user-core-php
Usage
use AnisSaied\UserCore\Domain\ValueObject\UserId; use AnisSaied\UserCore\Domain\ValueObject\Email; use AnisSaied\UserCore\Domain\User; use AnisSaied\UserCore\Application\Service\UserService; use AnisSaied\UserCore\Infrastructure\Persistence\InMemoryUserRepository; /** * Repository */ $repository = new InMemoryUserRepository(); /** * Service * En test → InMemoryUserRepository * En Laravel → EloquentUserRepository * En Symfony → DoctrineUserRepository * Sans changer une seule ligne dans UserService. */ $service = new UserService($repository); // Create a user $user = new User(new UserId('1'), 'Anis', new Email('anis@example.com')); $service->create($user);
Tests
- Tes tests sont déjà présents pour Unit et Integration
- Vérifie que :
- Chaque méthode publique est couverte
- Les criteria,
listByCriteriaetmatchingsont testés - Les tests peuvent tourner sur CI/CD (GitHub Actions par ex.)
- apply the tests by
vendor/bin/phpunit
Analyse statique
PHPStan sert à détecter les erreurs dans ton code PHP sans l’exécuter. C’est ce qu’on appelle de l’analyse statique.
vendor/bin/phpstan analyse
Documentation / PHPDoc / UML
- Les diagrammes PlantUML sont lĂ (
user-domain.puml+.png) - Assure-toi que toutes les classes et méthodes ont un docblock PHPDoc
- Tu peux générer la doc HTML avec phpDocumentor ou Sami pour fournir un site de documentation complet