smalot / framework

PSR-15, PSR-7, PSR-11 lightweight modular framework for REST services. With built-in swoole suport.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Igni logo

Build Status Scrutinizer Code Quality Code Coverage License: MIT

Igni is a mini php7 framework with modular architecture support that helps you quickly write scalable PSR-7 and PSR-15 compilant REST services.

<?php
require 'vendor/autoload.php';

use Igni\Http\Application;
use Igni\Http\Response;
use Psr\Http\Message\ServerRequestInterface as Request;

$application = new Application();

// Routing
$application->get('/hello/{name}', function (Request $request) : Response {
    return Response::fromText("Hello {$request->getAttribute('name')}.");
});

// Middleware
$application->use(function($request, $next) {
    $response = $next->handle($request);
    return $response->withAddedHeader('Version', $this->getConfig()->get('version'));
});

// Modules
$application->extend(new class implements ConfigProvider {
    public function provideConfig(Config $config): void {
        $config->set('version', '1.0');
    }
});

$application->run();

Installation and requirements

Recommended installation way of the Igni Framework is with composer:

composer install igniphp/framework

Requirements:

  • php 7.1 or better
  • swoole extension for build-in http server support

Features

Routing

Igni router is based on very fast symfony routing library.

PSR-7, PSR-15 Support

Igni fully supports PSR message standards for both manipulating http response, request and http middlwares.

Dependency Injection and Autoresolving

Igni autoresolves dependencies for you and provides intuitive dependency container. It also allows you to use any PSR compatible container of your choice.

Modular architecture

Modular and scalable solution is one of the most important aspects why this framework was born. Simply create a module class, implement required interfaces and extend application by your module.

Performant, production ready http server

No nginx nor apache is required with Igni. Now you can run your php applications the same manner you run node application:

php examples/build_in_server_example.php

Igni http server is as fast as express.js application with almost 0 configuration.

Detailed documentation

Detailed documentation and more examples can be found here and in examples directory.

About

PSR-15, PSR-7, PSR-11 lightweight modular framework for REST services. With built-in swoole suport.

License:MIT License


Languages

Language:PHP 100.0%