afridlund85 / asd-framework
Minimalistic framework for PHP7
dev-master
2016-09-06 21:45 UTC
Requires
- php: >=7.0.0
- psr/http-message: >=1.0
Requires (Dev)
- phpunit/php-code-coverage: >=4.0
- phpunit/phpunit: >=5.5
- phpunit/phpunit-selenium: >=3.0
- satooshi/php-coveralls: >=1.0
- squizlabs/php_codesniffer: >=2.7
This package is not auto-updated.
Last update: 2025-01-18 20:35:41 UTC
README
PHP7 Framework for API applications.
Installation
None, it is not even close to ready for release.
##Some Key Concepts
- PHP 7 only
- No dependencies(expect PSR-7 interfaces)
- PSR: 1,2,4,7
- No statics, no globals
- No forced strict conventions in naming/routing, folder structure etc when using
- No settings or configs
- Transparency, no unncessary abstraction/wrapping
- Use PHP 7 strict types, (except PSR-7 classes, cuz they're not PHP 7)
Intended usage
Presumptions: htaccess configured and PSR-4 autoloading
Define routes with HTTP-method, path and controllerclass + method
index.php
require_once('vendor/autoload.php');
use Asd\Asd;
use Asd\Router\Route;
use Asd\FunctionCallback;
use Asd\MethodCallback;
$app = new Asd();
//Controller class extending from Asd\Controller and has dependency to Asd\Session
$app->addRoute(new Route('GET', '/', new MethodCallback('MyApp\Controllers', 'Welcome', 'start')));
//Just some class with a method
$app->addRoute(new Route('GET', 'about', new MethodCallback('MyApp', 'SomeClass', 'about')));
//Closure/Anonymus function
$app->addRoute(new Route('post', 'blog', new FunctionCallback(function($req, $res){
//do stuff
return $this->res; //return response
})));
//Closure/anonymus function with dependency
$app->addRoute(new Route('post', 'auth', new FunctionCallback(function($req, $res, Asd\Session $session){
//session class automatically injected through DI
return $this->res;//return response
})));
$app->run();
MyApp/Controllers/Welcome.php
namespace MyApp\controllers;
use Asd\Controller;
class Welcome extends Controller
{
public function __construct(Asd\Session $session)
{
//session class automatically injected through DI
}
public function start($req, $res)
{
return $res->withJsonResponse('Hello!');
}
}
MyApp/SomeClass.php
namespace MyApp;
class SomeClass
{
public function about($req, $res)
{
//do stuff;
return $res;
}
}
Setup Development environment
Requires PHP7
git clone https://github.com/afridlund85/php7-api-framework.git
cd php7-api-framework
composer install
Tests
Three levels of testing, unit, integration and system.
Runing tests
Run all test suites
composer test
Run Unit test suite
composer unit
Run Integration test suite
composer integration
Run System test suite
composer system
PSR-2 linting
Check for PSR-2 errors
composer sniff
Code coverage
Generate code coverage
composer coverage