Concepts
SlimFit Application
SlimFit has a application object that extends Slim Application, it used Singleton to make sure only 1 application running.
Get application instance
$app = \App\SlimFit::getInstance()
// or use helper function
$app = app();
Dependency Container
SlimFit uses Pimple as Dependency Container because it’s very lightweight and flexible. You can read its documentation in Homepage.
Get service, factory by key
$container = app()->getContainer();
$value = $container->get($key);
$value2 = $container[$key2]
// or use helper function
$value3 = app($key3);
Get application config
SlimFit application autoload all PHP files in config
folder to retrieve array of config then put in DI Container via a namespace key config.[filename_without_extension]
.
File : config/console.php
return [
'console.name' => 'SlimFit console',
]
Getting that config
$console_name = $container['config.console']['console.name'];
// or short way
$console_name = app('config.console')['console.name'];
Service provider
Service provider MUST implements \Pimple\ServiceProviderInterface
We have some common service providers in app\ServiceProvider
: Monolog, Console, Capsule and Twig
You SHOULD register service provider in bootstraping of Application at bootstrap/app.php
, you can see we had 2 core service providers : Monolog and HttpKernel
$service_providers = [
App\ServiceProvider\Monolog::class => [],
App\ServiceProvider\HttpKernel::class => [],
// Your service providers below
App\ServiceProvider\Example::class => $config_replace_in_container,
];
which $config_replace_in_container
is an array of key-value config will be replaced in DI Container.