icehawk / icehawk
Lightweight PHP routing framework, respecting CQRS
Requires
- php: >=8.1
- ext-fileinfo: *
- psr/container: ^2.0
- psr/http-message: ~1.0
- psr/http-server-handler: ~1.0
- psr/http-server-middleware: ~1.0
Requires (Dev)
- ext-xdebug: *
- roave/security-advisories: dev-latest
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-08-08 21:05:25 UTC
README
Lightweight PHP routing framework, respecting CQRS.
Requirements
- PHP >= 7.0
- fileinfo extension for handling uploaded files correctly
For development only:
- xdebug extension for running the tests
Installation
composer require icehawk/icehawk:^2.1
or add to your composer.json:
{
"require": {
"icehawk/icehawk": "^2.1"
}
}
Documentation
A full documentation can be found on our website: icehawk.github.io
Quickstart (installer)
We provide an installer package that creates a new IceHawk project for you. Simply run:
composer create-project -n icehawk/installer /path/to/new-project
Answer the questions of the interactive installer and you're good to go.
» Watch our short video and see how it works: Install IceHawk framework in less than 2 minutes
Quickstart (manual)
Step 0 - Create a basic composer.json
{
"require": {
"icehawk/icehawk": "^2.1"
},
"autoload": {
"psr-4": {
"YourVendor\\YourProject\\": "./"
}
}
}
Then run:
composer update
Step 1 - Create a request handler
<?php declare(strict_types = 1); namespace YourVendor\YourProject; use IceHawk\IceHawk\Interfaces\HandlesGetRequest; use IceHawk\IceHawk\Interfaces\ProvidesReadRequestData; final class SayHelloRequestHandler implements HandlesGetRequest { public function handle( ProvidesReadRequestData $request ) { echo "Hello World!"; } }
— SayHelloRequestHandler.php
Step 2 - Create a basic config
All you need is at least one read or write route.
<?php declare(strict_types = 1); namespace YourVendor\YourProject; use IceHawk\IceHawk\Routing\ReadRoute; use IceHawk\IceHawk\Routing\Patterns\Literal; final class IceHawkConfig extends \IceHawk\IceHawk\Defaults\IceHawkConfig { public function getReadRoutes() { return [ new ReadRoute( new Literal('/'), new SayHelloRequestHandler() ), ]; } }
— IceHawkConfig.php
Step 3 - Create a bootstrap script
<?php declare(strict_types = 1); namespace YourVendor\YourProject; use IceHawk\IceHawk\IceHawk; use IceHawk\IceHawk\Defaults\IceHawkDelegate; require('vendor/autoload.php'); $iceHawk = new IceHawk(new IceHawkConfig(), new IceHawkDelegate()); $iceHawk->init(); $iceHawk->handleRequest();
— index.php
Step 4 - Say hello
Go to your project folder an run:
php -S 127.0.0.1:8088
Go to your browser an visit: http://127.0.0.1:8088/
Hello World!
Visit our website for the full documentation.
Contributing
Contributions are welcome! Please see our contribution guide.