All Projects → igniphp → Framework

igniphp / Framework

Licence: mit
Swoole, PSR-15, PSR-7, PSR-11 lightweight modular anti-framework for REST micro-services.

Projects that are alternatives of or similar to Framework

Proxy.py
⚡⚡⚡Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on Network monitoring, controls & Application development, testing, debugging
Stars: ✭ 1,291 (+398.46%)
Mutual labels:  framework, lightweight, http-server
Wolff
🐺 Lightweight and easy to use framework for building web apps.
Stars: ✭ 203 (-21.62%)
Mutual labels:  framework, lightweight, fast
docker-swoole-webapp
Simple Docker-image to build your applications based on Async PHP extensions.
Stars: ✭ 26 (-89.96%)
Mutual labels:  fast, swoole
clifm
The shell-like, command line terminal file manager: simple, fast, extensible, and lightweight as hell
Stars: ✭ 825 (+218.53%)
Mutual labels:  fast, lightweight
brute-md5
Advanced, Light Weight & Extremely Fast MD5 Cracker/Decoder/Decryptor written in Python 3
Stars: ✭ 16 (-93.82%)
Mutual labels:  fast, lightweight
Amber
A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance.
Stars: ✭ 2,345 (+805.41%)
Mutual labels:  framework, fast
Criollo
A powerful Cocoa web framework and HTTP server for macOS, iOS and tvOS.
Stars: ✭ 229 (-11.58%)
Mutual labels:  framework, http-server
lighttpd-Link
A lighttpd powered lightweight web server for the Steam Link
Stars: ✭ 21 (-91.89%)
Mutual labels:  lightweight, http-server
Foxify
The fast, easy to use & typescript ready web framework for Node.js
Stars: ✭ 138 (-46.72%)
Mutual labels:  framework, fast
Metrics
Lightweight alternative to github.com/prometheus/client_golang
Stars: ✭ 254 (-1.93%)
Mutual labels:  lightweight, fast
ios-application
A native, lightweight and secure one-time-password (OTP) client built for iOS; Raivo OTP!
Stars: ✭ 581 (+124.32%)
Mutual labels:  fast, lightweight
jobflow
runs stuff in parallel (like GNU parallel, but much faster and memory-efficient)
Stars: ✭ 67 (-74.13%)
Mutual labels:  fast, lightweight
Sifrr
⚡️ Set of tiny, independent libraries for creating modern and fast webapps with javascript/typescript
Stars: ✭ 174 (-32.82%)
Mutual labels:  framework, fast
Fiber
⚡️ Express inspired web framework written in Go
Stars: ✭ 17,334 (+6592.66%)
Mutual labels:  framework, fast
Pure Http
✨ The simple web framework for Node.js with zero dependencies.
Stars: ✭ 139 (-46.33%)
Mutual labels:  framework, http-server
tinyrpc
Much fast, lightweight, async, based boost.beast and protobuf.
Stars: ✭ 32 (-87.64%)
Mutual labels:  fast, lightweight
sabotage
a radical and experimental distribution based on musl libc and busybox
Stars: ✭ 502 (+93.82%)
Mutual labels:  fast, lightweight
Mix
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server
Stars: ✭ 1,753 (+576.83%)
Mutual labels:  framework, swoole
Wookiee
Scala based lightweight service framework using akka and other popular technologies.
Stars: ✭ 132 (-49.03%)
Mutual labels:  framework, lightweight
zhamao-framework
协程、高性能、灵活的聊天机器人 & Web 开发框架(炸毛框架)
Stars: ✭ 99 (-61.78%)
Mutual labels:  http-server, swoole

Igni logo

License: MIT Build Status Scrutinizer Code Quality Code Coverage

Igni is a php7 anti-framework with built-in swoole server and modular architecture support to help you quickly write scalable PSR-7 and PSR-15 compilant REST services.

Its main objective it to be as much transparent and as less visible for your application as possible.

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

use Igni\Application\Config;
use Igni\Application\HttpApplication;
use Igni\Application\Providers\ConfigProvider;
use Igni\Network\Http\Response;
use Igni\Network\Http\Request;

$application = new HttpApplication();

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

// Middleware - no interfaces no binding with framework code is required in order things to work.
$application->use(function($request, /** callable|RequestHandlerInterface */$next) {
    $response = $next($request);
    return $response->withAddedHeader('Version', $this->getConfig()->get('version'));
});

// Extending application is a brief just create and implement methods for your needs.
$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

What's new

With version 2.0 network package was extracted from the framework code, error handling was overall improved as well as Server's listeners. More details can be found in changelog file.

Quick start

Alternatively you can start using framework with quick start which contains bootstrap application.

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 when swoole is installed, application can be run the same manner as in node.js world:

php examples/build_in_server_example.php

Igni's 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].