Simple Module loading for decoupled application components
Install via composer:
composer require slender/module-loader
<?php
use \Slender\ModuleLoader\ModuleLoader;
use \Slender\ModuleLoader\ModuleInterface;
$app = new \Slim\App();
/**
* An example module class
*/
class MyModule implements ModuleInterface
{
public function invokeModule( \Slim\App $slim )
{
$slim->get('/foo',function(){
/* ... */
});
}
}
// Create the module loader instance
$moduleManager = new SimpleModuleLoader();
// Try to load the module
$moduleManager->loadModule('\Acme\Example\MyModule', $slim);
Module Locators are responsible for translating a module identifier string into a callable object that can be invoked to load the module. Module Locators must implement Slender\ModuleLoader\ModuleLocatorInterface
ModuleManager includes two default Locators, which are loaded by default when using the SimpleModuleLoader
.
Slender\ModuleLoader\Locator\SlenderModuleLocator
This locator will use the module identifier as a fully-qualified class name and attempt to load the class as long as it implements Slender\ModuleLoader\ModuleInterface
.
Slender\ModuleLoader\Locator\InvokableClassModuleLocator
This locator will use the module identifier as a fully-qualified class name and attempt to load the class and then invoke it.