This is a simple class with some utils to build websites with the following features:
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:https://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:https://localhost/my-website
(string) $app->getUri('post/1', 'details'); // http:https://localhost/my-website/post/1/details
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:https://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.