Skip to content
PHP7 micro framework, respecting CQRS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
build
src
tests
.coveralls.yml
.gitignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
Vagrantfile
composer.json
composer.lock

README.md

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.

You can’t perform that action at this time.