https://github.com/kepawni/twilted
A strictly typed PHP 7 library/framework suited for PhpSpec and striving for highest IDE intellisense comfort
https://github.com/kepawni/twilted
cqrs-framework event-sourcing intellisense library php-library php-traits php71 phpspec plantuml-diagrams scrutinizer strict-types traits uml-class-diagram
Last synced: 25 days ago
JSON representation
A strictly typed PHP 7 library/framework suited for PhpSpec and striving for highest IDE intellisense comfort
- Host: GitHub
- URL: https://github.com/kepawni/twilted
- Owner: kepawni
- License: gpl-3.0
- Created: 2018-12-18T11:05:05.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-24T12:40:58.000Z (over 4 years ago)
- Last Synced: 2025-02-10T10:53:06.384Z (3 months ago)
- Topics: cqrs-framework, event-sourcing, intellisense, library, php-library, php-traits, php71, phpspec, plantuml-diagrams, scrutinizer, strict-types, traits, uml-class-diagram
- Language: PHP
- Homepage:
- Size: 113 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# twilted
CQRS and Event Sourcing—The Way I Like To Engineer Domains## Status
[](https://travis-ci.org/kepawni/twilted)
[](https://scrutinizer-ci.com/g/kepawni/twilted/?branch=master)
[](https://scrutinizer-ci.com/code-intelligence)[read more...](doc/status.md)
## Concepts
### Serializing instances
Instead of relying on PHP's built-in serialization format on the one hand or enforcing the use of a certain format like JSON (even if it is a wise option) on the other hand, we decided to use an own way of simplifying instances for storing them that doesn't get in your way too much but won't cause a lot of extra work either.
[read more...](doc/serializing-instances.md)
### Immutability
It is important to eliminate side effects, which also means waving good-bye to setters. For configuring complex instances we use with…($value) methods that can be chained and always return a new instance.
[read more...](doc/immutability.md)
### Project structure
The core namespace \Kepawni\Twilted contains nothing but essential interfaces and an abstract class.
However, some basic convenience classes that can be used as an out-of-the-box solution can be found in \Kepawni\Twilted\Basic. These rely heavily on traits to cater for easy reuse while causing minimal coding.
[read more...](doc/structure.md)