DDD Day à Lyon

Alexandre Balmes propose à tous les développeurs PHP une journée (le samedi 30 janvier 2016 de 9H à 16H30) centrée sur la conception guidée par le domaine.

L’évènement est gratuit et la liste des intervenants annonce une belle journée. Pour s’inscrire, cela ce passe ici sur EventBrite.

J’y serais présent et j’ai hâte de rencontrer d’autre développeur PHP faisant du DDD pour de vrai !

Source : https://medium.com/@pockystar/ddd-day-1dab25711fb0

Bonne année 2016

En ce premier jour de l’année, je viens vous souhaiter une bonne et heureuse année 2016 remplie de joie en famille, entre amis, mais également professionnelle.

L’année 2015 fût chargée d’évènements dans le monde PHP ! Espérons que ces nouvelles versions améliorent notre quotidien et qu’elles nous permettent de progresser vers un code toujours meilleur !

Des bases de DDD, CQRS et EventSourcing en Français

Voici une vidéo d’une réunion du MUG de Lyon (octobre 2015) qui vous présente en 1h25.

DDD : « Domain Driven Design » soit en français « Conception Guidé par le Domaine ».

CQRS : « Command Query Responsibility Segregation » en français « Ségrégation des Responsabilité entre Commande et Requête ».

Event Sourcing : Principe qui place l’évènement qui vient de se produire au coeur du système.

Quelques liens :

Bonne vidéo et n’hésitez pas à réagir dans les commentaires.

PhpCache: NullDriver why ?

If you want to avoid this code in your class using the cache, the NullDriver and a possible answer.

Step 1 : In constructor, check if you have a real cache système

If cache objet is null, instantiate the null driver in a new PhpCache.

Step 2 : remove all if ($this->cache) in your class method and use cache normally.

 

[Updated] DDD with Broadway and the Design Pattern State

Note : This article is the translate of this article. I use Google Translate for help me to write in english. Please, if you read wrong phrase send me the correct by one comment.

In a refactoring sprint, I found that my main aggregate class took much overweight.

I had exceeded 750 lines of code with, in many actions, a « switch » or a dozen « IF ». This did not please me very much because, if a change was required with this level, the amendment would be difficult.

Continuer la lecture de [Updated] DDD with Broadway and the Design Pattern State 

[MàJ] DDD avec Broadway et le Design pattern State

[English version]

Au cours d’un petit sprint de refactorisation, j’ai constaté que la classe de mon principal agrégat prenait beaucoup d’embonpoint.

J’avais dépassé les 750 lignes de code avec, dans beaucoup d’actions, soit un “switch » soit une petite dizaine de “IF”. Cela ne me plaisait pas beaucoup car, si une modification était demandée à ce niveau-là, la modification serait délicate.

Continuer la lecture de [MàJ] DDD avec Broadway et le Design pattern State 

[Updated] Symfony, Broadway and the replay event

Note : This article is the translate of this article. I use Google Translate for help me to write in english. Please, if you read wrong phrase send me the correct by one comment.

On of the main advantages of EventSourcing is the replay event for build a new view database or sync the an old view.

Do have you ever wondered how to go about not send emails on events issued by the aggregates ?

In my case, the dilemma is rather important because many things are based on events. If they are replayed, all treatments are rerun.

In my project, I use Broadway (by QandidateLabs) for implementing the CQRS/ES.

For use the default event bus, you must tag any services with broadway.domain.event_listener and extend this class Broadway\Processor\Processor.
All services will be injected into the event bus by a compiler pass. The latter takes 3 arguments: the event bus service identifier, the tag used for get all services to inject her, and the interface name that services must implement to be injected.

You can reuse the code to add a new event bus without write more code.

3 steps for separate into new bus all services necessary for refresh view.

1) Add a new event bus

2) Add new tag for all services to update the view. By exemple mon_bundle.domain.event_listener.
3) Run new compiler pass with new parameters

This is a SOLID code.

Your event listener must also be. One listener one responsibility.

Finally, during the retransmission of events, simply send them on the bus dedicated to replay events to perform the update only the view.
That’s done! You can retransmit all the events to update the view without having to change the configuration of the production application to prevent the resend of the emails.

Get the source code on github.

Now you can share your experiences in the comments.

[MàJ] Symfony, Broadway et le replay d’event

[English version]

L’un des principaux atouts qui reviennent souvent lorsque l’on parle de l’EventSourcing est la réémission des évènements afin de reconstruire la vue (par exemple). Cela peut être pour la construction d’une nouvelle base de vue ou le rafraichissement de la vue désynchronisée.

Ne vous est-il jamais arrivé de vous demander comment s’y prendre pour ne pas renvoyer les emails basés sur les évènements émis par les agrégats ?

Continuer la lecture de [MàJ] Symfony, Broadway et le replay d’event 

Fin du transfert

Et voilà, le transfert est terminé.

Lors de ce genre d’opération, il y a des pertes ! Celles-ci sont voulues car j’en ai profité pour réaliser un petit tri vertical !

Vous trouverez donc en haut la liste de mes applications.

Mes projets open-source sont toujours sur GitHub, mes photos sont sur Flickr, la lettre d’actualités n’existe plus car elle ne sortait pas par manque de temps.

Ce ménage réalisé, il me reste à reprendre quelques-un de mes billets de mon ancien blog. Vous les verrez réapparaître ici au fur et à mesure.

A très bientôt !