Cette bibliothèque est une conception pour vous aider à créer votre application avec une approche de développement de conception de domaine.
Il est bien intégré à:
Mais vous pouvez l'utiliser avec n'importe quel projet PHP.
Voici quelques diapositives qui expliquent comment nous y arrivons.
Événements de domaine:
Cette bibliothèque est construite pour vous permettre d'utiliser des modèles de doctrine comme modèle de domaine. Cela a un coût: vous ne pouvez plus instancier le modèle de domaine à la main. Cela signifie que vous avez besoin d'une usine pour l'un des utilisations de votre modèle de domaine.
Ce composant fournit la mise en œuvre du sérialiseur Symfony et de la doctrine. Pour vos propres besoins, vous devez utiliser la classe (service si vous utilisez le bundle) BiigComponentDomainModelInstantiatorInstantiator
.
composer require biig/domain
class YourModel extends DomainModel
{
public const CREATION = ' creation ' ;
public function __construct ()
{
$ this -> dispatch ( new DomainEvent ( $ this ), self :: CREATION );
}
}
class DomainRule implements DomainRuleInterface
{
public function on ()
{
return YourModel :: CREATION ;
}
public function execute ( DomainEvent $ event )
{
// Do Something on your model creation
}
}
Comme votre modèle a besoin d'un répartiteur, vous devez appeler la méthode setDispatcher()
chaque fois que vous créez une nouvelle instance de votre modèle. Pour éviter de le faire manuellement, vous pouvez utiliser l' Instantiator
fourni par la bibliothèque.
Il n'utilise pas le constructeur pour ajouter le répartiteur car dans PHP, vous pouvez créer des objets sans le constructeur. Par exemple, c'est ce que fait la doctrine.
Utilisez le bundle:
<?php
// config/bundles.php
return [
// ...
Biig Component Domain Integration Symfony DomainBundle ::class => [ ' all ' => true ],
];
En savoir plus sur l'intégration Symfony
Version | Statut | Documentation | Version Symfony | Version PHP |
---|---|---|---|---|
1.x | Maintenu | v1 | '> = 3.3 && <5' | '> = 7.1' |
2.x | Dernier | v2 | '> = 4.3' | '> = 7.1' |