Download the PHP package andydefer/domain-structures without Composer
On this page you can find all versions of the php package andydefer/domain-structures. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andydefer/domain-structures
More information about andydefer/domain-structures
Files in andydefer/domain-structures
Package domain-structures
Short Description A complete domain structures package for PHP: Records, Value Objects, Data DTOs, and TypedCollections. Brings type safety and clean architecture to your application.
License MIT
Informations about the package domain-structures
Domain Structures
Une bibliothèque PHP pour la création de structures de domaine type-safety, immutables et robustes, spécialement conçue pour l'architecture hexagonale et le Domain-Driven Design (DDD).
📚 Table des matières
- À propos
- Installation
- Concepts fondamentaux
- Value Objects
- Records
- Data DTO
- Typed Collections
- DataObject
- Systèmes transverses
- Hydratation automatique
- Normalisation
- Utilisation
- Bonnes pratiques
- Support
🎯 À propos
Domain Structures est une bibliothèque PHP qui fournit une base solide pour construire des applications avec une architecture propre et type-safe. Elle implémente les patterns fondamentaux du Domain-Driven Design :
- Value Objects : Concepts métier auto-validants
- Records : Structures de données internes immutables
- Data DTO : Objets de transfert pour les réponses API
- Typed Collections : Collections type-safe
- Hydratation automatique : Création d'objets depuis n'importe quelle source via
HydrationService - Normalisation : Export vers des structures simples (JSON, base de données)
Philosophie
"Rien n'est primitif, tout est concept"
Dans une application bien architecturée, on ne manipule jamais de types primitifs directement. Chaque donnée est représentée par un concept explicite :
| Au lieu de... | Utilisez... |
|---|---|
int $id |
UserId $id |
string $email |
EmailAddress $email |
float $price |
Money $price |
array $products |
ProductCollection $products |
📦 Installation
Prérequis :
- PHP 8.1 ou supérieur
- Extension JSON activée
📖 Concepts fondamentaux
1. Value Objects
Les Value Objects représentent des concepts métier avec leur propre comportement et validation.
Caractéristiques :
- ✅ Immutable
- ✅ Auto-validant (validation dans le constructeur)
- ✅ Comportement métier
- ✅ Pas d'identité propre
👉 Documentation complète des Value Objects
2. Records
Les Records sont des structures de données internes pour la communication entre les couches de l'application.
Caractéristiques :
- ✅ Immutable
- ✅ Support JSON (via normalisation)
- ❌ Pas de logique métier
👉 Documentation complète des Records
3. Data DTO
Les Data DTO sont des objets de transfert exclusivement pour les réponses API.
Caractéristiques :
- ✅ Exclusivement pour les réponses API
- ✅ Normalisation en
camelCase - ❌ Aucun type primitif autorisé
👉 Documentation complète des Data DTO
4. Typed Collections
Les Typed Collections remplacent les tableaux bruts par des collections type-safe.
Collections utilitaires prédéfinies :
| Collection | Type contenu |
|---|---|
StringTypedCollection |
string |
IntTypedCollection |
int |
FloatTypedCollection |
float |
BoolTypedCollection |
bool |
NumberTypedCollection |
int\|float |
👉 Documentation complète des Typed Collections
5. DataObject
DataObject est un normalisateur d'accès aux données qui sert de pont entre les sources externes et le système.
👉 Documentation complète de DataObject
🔧 Systèmes transverses
Hydratation automatique (HydrationService)
Le service HydrationService analyse le constructeur d'une classe et l'hydrate automatiquement depuis n'importe quelle source.
Support :
- ✅ Types scalaires (int, float, string, bool)
- ✅ Enums (BackedEnum)
- ✅ Unions types
- ✅ Objets (hydratation récursive)
- ✅ Valeurs par défaut
- ✅ Nullabilité
👉 Documentation complète de l'Hydratation
Normalisation
Le système de normalisation convertit récursivement les objets complexes en structures simples (tableaux, scalaires).
Normaliseurs disponibles :
NullNormalizer→ nullScalarNormalizer→ scalairesEnumNormalizer→ valeurRecordNormalizer→ tableau (camelCase → snake_case)ValueObjectNormalizer→ valeur bruteDataNormalizer→ tableau (conserve camelCase)TypedCollectionNormalizer→ tableau indexéDataObjectNormalizer→ tableau associatifArrayNormalizer→ récursif
👉 Documentation complète de la Normalisation
🚀 Utilisation
Exemple complet avec HydrationService
💡 Bonnes pratiques
1. Value Objects
2. Records
3. Data DTO
4. Typed Collections
5. Hydratation
6. DataObject
🔗 Liens rapides vers la documentation
| Concept | Documentation |
|---|---|
| Value Objects | VALUE_OBJECTS.md |
| Records | RECORDS.md |
| Data DTO | DATA.md |
| Typed Collections | TYPED_COLLECTIONS.md |
| DataObject | DATA_OBJECTS.md |
| Hydratation | HYDRATABLE.md |
| Normalisation | NORMALIZATION.md |
🤝 Support
Pour toute question ou suggestion :
- Issues : GitHub Issues
- Documentation : Consultez les fichiers dans le dossier
/concepts
📄 License
MIT License - Copyright (c) 2024 Andy Defer
⚡ Résumé
Domain Structures vous permet de construire des applications PHP avec :
✅ Type-safety : Tous les types sont explicites et validés
✅ Immutabilité : Aucune modification accidentelle
✅ Hydratation automatique : Création d'objets depuis n'importe quelle source
✅ Normalisation : Export vers JSON, base de données, cache
✅ Collections typées : Remplacement type-safe des tableaux
✅ Architecture propre : Séparation claire des responsabilités
Commencez dès maintenant :