All Projects → msgphp → Msgphp

msgphp / Msgphp

Licence: mit
Reusable domain layers. Shipped with industry standard infrastructure.

Projects that are alternatives of or similar to Msgphp

User Bundle
A new Symfony user bundle
Stars: ✭ 116 (-36.26%)
Mutual labels:  cli, twig, event-sourcing, doctrine, symfony-bundle, user-management, cqrs, domain-driven-design, uuid
Symfony Demo App
A Symfony demo application with basic user management
Stars: ✭ 122 (-32.97%)
Mutual labels:  cli, twig, event-sourcing, doctrine, symfony, user-management, cqrs, domain-driven-design, uuid
eav-bundle
A Symfony bundle for basic EAV management
Stars: ✭ 19 (-89.56%)
Mutual labels:  uuid, cqrs, symfony-bundle, doctrine, domain-driven-design, event-sourcing
user
A domain layer providing basic user management
Stars: ✭ 14 (-92.31%)
Mutual labels:  uuid, cqrs, doctrine, domain-driven-design, event-sourcing, user-management
domain
A dependency-free package to help building a business domain layer
Stars: ✭ 33 (-81.87%)
Mutual labels:  uuid, cqrs, doctrine, domain-driven-design, event-sourcing
Php Ddd Example
🐘🎯 Hexagonal Architecture + DDD + CQRS in PHP using Symfony 5
Stars: ✭ 1,960 (+976.92%)
Mutual labels:  doctrine, symfony, cqrs, domain-driven-design
Event Store Symfony Bundle
Event Store Symfony Bundle
Stars: ✭ 93 (-48.9%)
Mutual labels:  event-sourcing, symfony, symfony-bundle, cqrs
Kreta
Modern project management solution
Stars: ✭ 177 (-2.75%)
Mutual labels:  event-sourcing, symfony, cqrs, domain-driven-design
Kimai2
Kimai v2 is a web-based multiuser time-tracking application. Free for everyone: freelancers, agencies, companies, organizations - all can track their times, generate invoices and more. SaaS version available at https://www.kimai.cloud
Stars: ✭ 1,216 (+568.13%)
Mutual labels:  twig, doctrine, symfony, user-management
Knppaginatorbundle
SEO friendly Symfony paginator to sort and paginate
Stars: ✭ 1,534 (+742.86%)
Mutual labels:  twig, symfony, symfony-bundle
Revo
Event Sourcing, CQRS and DDD framework for C#/.NET Core.
Stars: ✭ 162 (-10.99%)
Mutual labels:  event-sourcing, cqrs, domain-driven-design
Bifrost
This is the stable release of Dolittle till its out of alpha->beta stages
Stars: ✭ 111 (-39.01%)
Mutual labels:  event-sourcing, cqrs, domain-driven-design
Doctrinephpcrbundle
This bundle integrates Doctrine PHPCR ODM and PHPCR backends into Symfony
Stars: ✭ 131 (-28.02%)
Mutual labels:  doctrine, symfony, symfony-bundle
Productcontext Eventsourcing
A practical/experimental Event Sourcing application on Product Bounded Context in an e-commerce
Stars: ✭ 88 (-51.65%)
Mutual labels:  event-sourcing, cqrs, domain-driven-design
Symfony4 Ddd
Bootstrap Application for Symfony 4 with Domain Driven Design
Stars: ✭ 126 (-30.77%)
Mutual labels:  doctrine, symfony, domain-driven-design
Stofdoctrineextensionsbundle
Integration bundle for DoctrineExtensions by l3pp4rd in Symfony
Stars: ✭ 1,713 (+841.21%)
Mutual labels:  doctrine, symfony, symfony-bundle
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (-28.02%)
Mutual labels:  event-sourcing, cqrs, domain-driven-design
Event Sourcing Jambo
An Hexagonal Architecture with DDD + Aggregates + Event Sourcing using .NET Core, Kafka e MongoDB (Blog Engine)
Stars: ✭ 159 (-12.64%)
Mutual labels:  event-sourcing, cqrs, domain-driven-design
Web Profiler Bundle
The WebProfilerBundle provides detailed technical information about each request execution and displays it in both the web debug toolbar and the profiler.
Stars: ✭ 1,905 (+946.7%)
Mutual labels:  twig, symfony, symfony-bundle
Doctrinefixturesbundle
Symfony integration for the doctrine/data-fixtures library
Stars: ✭ 2,174 (+1094.51%)
Mutual labels:  doctrine, symfony, symfony-bundle

Message Driven PHP

Build Status Code Coverage

MsgPHP is a project that aims to provide reusable domain layers for your application. It has a low development time overhead and avoids being overly opinionated.

It follows Semantic Versioning, yet during development phase a package can be marked @experimental to indicate "BC breaks" could be introduced.

Domain Layers

The domain layer is a collection of entity objects and related business logic that is designed to represent the enterprise business model. The major scope of this layer is to create a standardized and federated set of objects, that could be potentially reused within different projects. (source)

Currently supported domain layers are:

On the roadmap are:

  • Organization
  • File
  • Taxonomy
  • ...

Design-Time Considerations

  • The base domain package (msgphp/domain) integrates with YOUR domain layer (it's dependency free by design)
  • You inherit from the default domain layers, if used
  • The first-class supported ORM is Doctrine ORM
  • The first-class supported message bus is Symfony Messenger

Message Based

Each domain layer provides a set of messages to consume it. Typically the messages are categorized into command-, event- and query-messages.

The main advantage is we can intuitively create an independent flow of business logic. It provides consistency in handling our business logic by dispatching the same message in e.g. web as well as CLI.

$anyMessageBus->dispatch(new CreateSomething(['field' => 'value']));

A command-message is dispatched and picked up by its handler to do the work. This handler on itself dispatches a new event-message (e.g. SomethingCreated) to notify the work is done.

A custom handler can subscribe to the SomethingCreated event to further finalize the business requirements (e.g. dispatch another commmand-message).

class MakeSomethingWork
{
    private $bus;

    public function __construct(YourFavoriteBus $bus)
    {
        $this->bus = $bus;
    }

    public function __invoke(SomethingCreated $event)
    {
        // do work, or better delegate work:
        $this->bus->dispatch(new LetSomethingWork($event->something));
    }
}

Documentation

Contributing

See CONTRIBUTING.md

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].