https://github.com/igniphp/framework
Swoole, PSR-15, PSR-7, PSR-11 lightweight modular anti-framework for REST micro-services.
https://github.com/igniphp/framework
fast framework http-server lightweight php psr-15 psr-7 swoole
Last synced: 11 days ago
JSON representation
Swoole, PSR-15, PSR-7, PSR-11 lightweight modular anti-framework for REST micro-services.
- Host: GitHub
- URL: https://github.com/igniphp/framework
- Owner: igniphp
- License: mit
- Created: 2018-03-06T05:10:13.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-01-16T09:51:33.000Z (about 4 years ago)
- Last Synced: 2024-05-22T19:30:28.849Z (11 months ago)
- Topics: fast, framework, http-server, lightweight, php, psr-15, psr-7, swoole
- Language: PHP
- Homepage:
- Size: 178 KB
- Stars: 266
- Watchers: 18
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-swoole - Igni - Psr-compatible micro-framework for rest services. (Framework)
README
# 
[](./LICENSE)
[](https://travis-ci.org/igniphp/framework)
[](https://scrutinizer-ci.com/g/igniphp/framework/?branch=master)
[](https://scrutinizer-ci.com/g/igniphp/framework/?branch=master)Igni is a php7 anti-framework with built-in [swoole server](https://www.swoole.co.uk) 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
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](https://github.com/swoole/swoole-src) 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](https://github.com/igniphp/framework-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](docs/README.md) and in examples directory.