oscarotero / fol
Base App class to build websites
v1.0.1
2021-12-16 17:50 UTC
Requires
- php: ^7.2|^8.0
- container-interop/service-provider: ^0.4.0
- psr/container: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- laminas/laminas-diactoros: ^2.8
- phpunit/phpunit: ^8.0
README
This is a simple class with some utils to build websites with the following features:
Paths and URI
Manage the path of the app and the public uri using the UriInterface
from PSR-7:
use Fol\App; use Zend\Diactoros\Uri; $path = '/var/www/my-website'; $uri = new Uri('http://localhost/my-website'); $app = new App($path, $uri); //Get the path $app->getPath(); // /var/www/my-website $app->getPath('dir/subdir', '../other'); // /var/www/my-website/dir/other //Get the uri (string) $app->getUri(); // http://localhost/my-website (string) $app->getUri('post/1', 'details'); // http://localhost/my-website/post/1/details
PSR-11
It's compatible with PSR-11 and container-interop/service-provider, and allows to nest other containers:
use Fol\App; use Zend\Diactoros\Uri; $app = new App(__DIR__, new Uri('http://localhost/my-website')); //Set a value $app->set('database.config', [ 'user' => 'foo', 'pass' => 'bar' ]); //Get the value $config = $app->get('database.config'); //Set a service $app->addService('database', function ($app) { return new DatabaseClass($app->get('database.config')); }); //Get the service value $database = $app->get('database'); //And add ServiceProviderInterface instances to register several dependencies $app->addServiceProvider(new MyServiceProvider());
Please see CHANGELOG for more information about recent changes.
The MIT License (MIT). Please see LICENSE for more information.