icehawk/icehawk

Lightweight PHP routing framework, respecting CQRS

v3.0.0-beta2 2022-05-27 12:39 UTC

README

Join the chat at https://gitter.im/icehawk/icehawk Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License phpstan enabled

IceHawk Framework

Lightweight PHP routing framework, respecting CQRS.

Requirements

For development only:

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.