anis-saied/user-core-php

Core user domain logic (framework agnostic)

Maintainers

Package info

github.com/anis-saied/user-core-php

pkg:composer/anis-saied/user-core-php

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-01-27 09:02 UTC

This package is auto-updated.

Last update: 2026-02-27 09:21:17 UTC


README

Version License PHP

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

User Domain

  • 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, listByCriteria et matching sont 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