alitalaghat / slim-facades
Facades for Slim 4.
Requires
- php: >=7.2
- slim/slim: >=4.0
This package is auto-updated.
Last update: 2024-04-18 23:25:12 UTC
README
Introduction
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.
Requirement
- PHP >= 7.2
- Slim >= 4.0
Installation
Using composer:
composer require alitalaghat/slim-facades
Usage
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();
Default Facades
The following facades are provided by Slim-Facades:
App
Use it just like using $app!
App::run();
Container
Use it just like using $container!
Container::has('view');
Route
Route::get('/', function (Request $req, Response $res) { $res->getBody()->write("Hello"); return $res; });
Custom Facades
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'); } }