Lightweight PHP routing framework, respecting CQRS

v2.2.0 2017-09-01 20:29 UTC


Join the chat at Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License phpstan enabled

IceHawk Framework

Lightweight PHP routing framework, respecting CQRS.


For development only:


composer require icehawk/icehawk:^2.1

or add to your composer.json:

	"require": {
		"icehawk/icehawk": "^2.1"


A full documentation can be found on our website:

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;


$iceHawk = new IceHawk(new IceHawkConfig(), new IceHawkDelegate());


— index.php

Step 4 - Say hello

Go to your project folder an run:

php -S

Go to your browser an visit:

Hello World!

Visit our website for the full documentation.


Contributions are welcome! Please see our contribution guide.