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-06-12 08:58:17 UTC
README
Swift messenger PHP framework with standardized interfaces, extreme customizability, seamless async support, and high performance.
⚠️ WARNING: Hermes is in very early development. Some core functionality is missing and tests are a work in progress. For now, this 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 ensure interoperability with existing tools.
-
Customizable Core Provides clear interfaces that can be implemented and swapped out as you like, making it easy to replace first-party components.
-
Minimized Magic Avoids magic (magic methods, reflection, etc.) that makes code harder to follow, reduces type safety, and degrades performance. Magic is used only where it genuinely improves developer experience (e.g., limited reflection for DI auto-wiring).
-
Performance Priority Focuses on performance by using abstractions judiciously, ensuring minimal overhead. Leverages libraries and tools that are optimized for speed and efficiency.
📚 Documentation
// TODO: implement this!
Check the example
directory to get an idea of how things work.
🚀 Feature List
- Dependency Injection
- HTTP Server
- CLI
- Queue System
- WebSocket Server