Modules can also register invokable classes, which are instanciated when
the module is loaded and passed the Slender\App
instance in order to
perform additional logic on the app.
Invokable classes are called after Slim has been initialized, but before the Slender constructor returns.
Module invokables are registered in the invoke
section of the module
configuration file. It is an array of classes that should be instanciated
when the Module is loaded.
module:
name: my-module
namespace: MyVendor\MyModule
autoload:
psr-4:
MyVendor\MyModule: ./src
invoke:
- MyVendor\MyModule\MyInvokableClass
If the module config also contains a namespace
definition, or the module
was loaded via ClassLookup, Slender will automatically look
for a class of NAMESPACE\SlenderModule
and try to invoke it.
All classes registered as invokable MUST implement the following interface:
interface Slender\InvokableInterface {
public function invoke(\Slender\App $app);
}
An example invokable class that sets the app version setting from composer.json
// ./module/my-module/src/SlenderModule.php
namespace MyVendor\MyModule;
use Slender\InvokableInterface;
use Slender\App;
class SlenderModule implements InvokableInterface {
public function invoke(App $app){
$composerData = json_decode(file_get_content('./package.json'));
$version = $composerData['version'];
$app->config('version',$version);
$app['settings']['version'] === $version
}
}