php-ddd-example
phpunit-injector
Our great sponsors
php-ddd-example | phpunit-injector | |
---|---|---|
2 | 1 | |
2,901 | 61 | |
0.9% | - | |
7.1 | 4.0 | |
23 days ago | 3 months ago | |
PHP | PHP | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
php-ddd-example
- Hexagonal Architecture, DDD and CQRS in PHP
-
DDD / Hexagonal Architecture
Have a look at https://symfonycasts.com/screencast/symfonycon2019/hexagonal-architecture-with-symfony (and all resources from Matthias Noback including books, tweets and blogposts). Also check: - https://github.com/CodelyTV/php-ddd-example - https://github.com/msgphp/msgphp - https://minompi.medium.com/symfony-and-hexagonal-architecture-b3c4704e94de- https://blog.elao.com/fr/dev/architecture-hexagonale-symfony/ (needs to be translated from french, but really good one). - https://verraes.net/ (and all resources/tweets/blogposts from Mathias Verraes who has really good knowledge on DDD topics)
phpunit-injector
-
Testing with immutable PSR-7 objects and Prophecy
This unit test will fail when ran against the implementation from earlier. And in this situation a failing test is a good thing. But for this specific situation another "issue" has made it's way into the testcase; the unit test is now depending on the implementation that is being used for PSR-7. When working in a large codebase - like I currently am - one might have more than just a few usages of these interfaces and thus unit tests. Using the suggested approach, instantiating value objects instead of prophesizing, will lead to a large amount of object instantiations. And this will make switching to another implementation more work. Ideally this instantiating is centralized as much as possible. This is exactly why PSR-17 - HTTP Factories - was introduced. Typically dependencies - like these factories - are injected. For unit tests this is not feasible without plugins. My solution is a bit less fancy; a trait:
What are some alternatives?
ddd-laravel-sample - A Laravel DDD sample application using CQRS and persisting entities serialized without ORM
doctrine-test-bundle - Symfony bundle to isolate your app's doctrine database tests and improve the test performance
laravel-route-attributes - Use PHP 8 attributes to register routes in a Laravel app
Symfony DI - Allows you to standardize and centralize the way objects are constructed in your application
monorepo-split-github-action - Github Action for Monorepo Split
Mockery - Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL).
explicit-architecture-php - This repository is a demo of Explicit Architecture, using the Symfony Demo Application.
Prophecy - Highly opinionated mocking framework for PHP 5.3+
msgphp - Reusable domain layers. Shipped with industry standard infrastructure.
BrainMonkey - Mocking utility for PHP functions and WordPress plugin API
Prooph Service Bus - PHP Lightweight Message Bus supporting CQRS.
phpunit-architecture-test - PHPUnit Application Architecture Test. For architecture tests