hermes-framework / hermes
Requires
- php: ^8.4
- psr/container: ^2.0
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- brianium/paratest: ^7.9
- filp/whoops: ^2.18
- friendsofphp/php-cs-fixer: ^3.71
- laminas/laminas-diactoros: ^3.5
- league/climate: ^3.10
- nikic/fast-route: ^1.3
- phpstan/phpstan: ^2.1
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^12.0
- swoole/ide-helper: ^6.0
Suggests
- ext-swoole: Unless you are implementing everything from scratch you would need version 6.0 of ext-swoole extension
- filp/whoops: If you intend to use the WhoopsExceptionHandler implemented as a default framework component for good looking error handling
- laminas/laminas-diactoros: Laminas Diactoros is used as the implementation of PSR Http interfaces along with the default swoole transformer components
- league/climate: CLIMate is required for nice cli outputs as implemented in the default CLIMateHttpKernelDebugger component
- nikic/fast-route: Fast Route written by the legendary Nikic is used as the actual router used by the default FastRouteHttpRouter component
This package is auto-updated.
Last update: 2025-04-11 16:25:28 UTC
README
Swift messenger PHP framework with standardized interfaces, extreme customizability, seamless async support, and high performance.
WARNING: This is still in very early stages, some core functionality is missing and tests are a work in progress as well so for now it is just a "build in public" concept. :)
Design goals
-
Asynchronous Aware: Tailored for use with asynchronous tools such as Swoole, OpenSwoole, and RoadRunner, enabling efficient handling of concurrent requests.
-
Standard Surface: Adheres to standard interfaces(e.g. PSR) as much as possible to make it interoperable with existing tools.
-
Customizable Core: There are clear interfaces that can be implemented however you like and replace existing first-party components.
-
Minimized Magic: Magic(magic method, reflection, alike) makes following the code in your editor harder, reduce type safety and generally degrade performance therefore their use is avoided unless absolutely necessary for a reasonable DevEx(e.g. reflection for DI auto wiring).
-
Performance Priority: Emphasizes performance by using abstractions judiciously, ensuring minimal overhead. Leverages libraries and tools that are optimized for speed and efficiency.
Documentation
// TODO: implement this!
But you can get an idea of how things work by looking at the example
directory.
Feature List
- Dependency Injection
- HTTP Server
- CLI
- Queue System
- WebSocket Server