atournayre / framework
A framework and helpers on top of Symfony
Requires
- php: >=7.4 || ^8.0
- aimeos/map: ^3.7
- doctrine/collections: ^1.6 || ^2
- nesbot/carbon: ^2.72
- psr/log: ^1.1 || ^2.0 || ^3
- symfony/console: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/event-dispatcher: ^5.4 || ^6.0
- symfony/filesystem: ^5.4 || ^6.0
- symfony/finder: ^5.4 || ^6.0
- symfony/http-foundation: ^5.4 || ^6.0
- symfony/mailer: ^5.4 || ^6.0
- symfony/options-resolver: ^5.4 || ^6.0
- symfony/process: ^5.4 || ^6.0
- symfony/routing: ^5.4 || ^6.0
- symfony/stopwatch: ^5.4 || ^6.0
- symfony/string: ^5.4 || ^6.0
- symfony/translation: ^5.4 || ^6.0
- symfony/twig-bridge: ^5.4 || ^6.0
- symfony/uid: ^5.4 || ^6.0
- twig/twig: ^2.13|^3.0.4
- webmozart/assert: ^1.11
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- phparkitect/phparkitect: ^0.3.33
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.11
- phpstan/phpstan-deprecation-rules: ^1.2
- phpstan/phpstan-doctrine: ^1.4
- phpstan/phpstan-phpunit: ^1.4
- phpstan/phpstan-strict-rules: ^1.6
- phpstan/phpstan-webmozart-assert: ^1.2
- phpunit/phpunit: ^9.5
- rector/rector: ^1.1
- rector/swiss-knife: ^0.2.16
- spaze/phpstan-disallowed-calls: ^3.4
- tomasvotruba/lines: ^0.5.1
- tomasvotruba/unused-public: ^0.3.9
Conflicts
README
Warning: This documentation is a work in progress.
Currently, it is compatible with PHP 7.4 ans Symfony 5.4.
Documentation
This is the documentation for the project.
Architecture Decision Records
Architecture Decision Records (ADRs) are a way to document the architectural decisions made during the development of the project. List of ADRs can be found here.
Primitives
Primitives are the basic building blocks of the project. They are the smallest units of the project that can be used to build more complex structures. List of primitives can be found here.
Handling nullable values using the Null Object Pattern
In this project, we use the Null Object Pattern to handle nullable values. You can read more about it here.
DateTimeInterface
Use the Atournayre\Contracts\DateTimeInterface
instead of the \DateTimeInterface
class to represent dates and times.
Logging
Use the Atournayre\Contracts\LoggerInterface
to log messages in the project.
Collections
Usage or arrays is discouraged in the project. Use Collections instead. You can read more about it here.
HTTP/Session/Templating
Use the Atournayre\Contracts\HttpInterface
, Atournayre\Contracts\SessionInterface
, and Atournayre\Contracts\TemplatingInterface
to interact with the HTTP protocol, manage sessions, and render templates.
Filesystem
Use the Atournayre\Contracts\FilesystemInterface
to interact with the filesystem.
Events
Add the HasEventsInterface
to an object to allow it to dispatch events and add the EventsTrait
to add events to an object.
Implement missing methods from the HasEventsInterface
in the object.