SlimFacades is a package to provide facades for Slim PHP framework. This package is based on slim-facdes by @zhangshize.
Facades is a noun from Laravel(also a PHP Framework). Facades provide a "static" interface to classes that are available in the application's service container.
Laravel facades serve as "static proxies" to underlying classes in the service container, providing the benefit of a terse, expressive syntax while maintaining more testability and flexibility than traditional static methods, so does Slim-Facades.
- PHP >= 7.2
- Slim >= 4.0
Using composer:
composer require alitalaghat/slim-facades
After the installation, you can update your code like this:
//... Something not important ...
use SlimFacades\Facade;
use SlimFacades\Route;
use SlimFacades\App;
// Create Container using PHP-DI
$container = new Container();
// Set container to create App with on AppFactory
AppFactory::setContainer($container);
$app = AppFactory::create();
// initialize the Facade class
Facade::setFacadeApplication($app);
Route::get('/', function (Request $req, Response $res) {
$res->getBody()->write("Hello");
return $res;
});
App::run();
The following facades are provided by Slim-Facades:
Use it just like using $app!
App::run();
Use it just like using $container!
Container::has('view');
Route::get('/', function (Request $req, Response $res) {
$res->getBody()->write("Hello");
return $res;
});
The code for creating a custom facades for a service in the container is the following:
using SlimFacades\Facade;
class CustomFacade extends Facade
{
protected static function getFacadeAccessor()
{
//Change 'serviceName' to you want.
return 'serviceName';
}
}
The code for creating a custom facades for an instance is the following:
using SlimFacades\Facade;
class CustomFacade extends Facade
{
public static function self()
{
//Change the returned value to you want.
return self::$app->getContainer()->get('myservice');
}
}