Lightweight PHP routing framework, respecting CQRS.
- PHP >= 7.0
- fileinfo extension for handling uploaded files correctly
For development only:
- xdebug extension for running the tests
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: icehawk.github.io
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
{
"require": {
"icehawk/icehawk": "^2.1"
},
"autoload": {
"psr-4": {
"YourVendor\\YourProject\\": "./"
}
}
}
Then run:
composer update
<?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
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
<?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
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.
Contributions are welcome! Please see our contribution guide.