akrabat / rka-slim-controller
为 Slim 框架动态实例化的控制器类
2.0.1
2015-01-07 09:54 UTC
Requires
- php: >=5.4
- slim/slim: ~2.4
README
一个扩展 Slim 框架的插件,允许你在路由时动态实例化控制器,就像使用闭包一样。
控制器可以选择从 Slim 的依赖注入容器中加载,允许你根据需要注入依赖项。
安装
composer require akrabat/rka-slim-controller
使用方法
使用字符串格式 {控制器类名称}:{动作方法名称}
替代通常使用的闭包
例如:
$app = new \RKA\Slim();
$app->get('/hello:name', 'App\IndexController:home');
您还可以将控制器注册到 Slim 的依赖注入容器中
$app = new \RKA\Slim();
$app->container->singleton('App\IndexController', function ($container) {
// Retrieve any required dependencies from the container and
// inject into the constructor of the controller
return new \App\IndexController();
});
$app->get('/', 'App\IndexController:index');
控制器类方法
RKA Slim Controller 将调用存在并适当地填充控制器类的 setApp()
、setRequest()
和 setResponse()
方法。然后,它将调用控制器的 `init()` 方法。
因此,一个典型的控制器可能看起来像
<?php
namespace App;
class IndexController
{
// Optional properties
protected $app;
protected $request;
protected $response;
public function index()
{
echo "This is the home page";
}
public function hello($name)
{
echo "Hello, $name";
}
// Optional setters
public function setApp($app)
{
$this->app = $app;
}
public function setRequest($request)
{
$this->request = $request;
}
public function setResponse($response)
{
$this->response = $response;
}
// Init
public function init()
{
// do things now that app, request and response are set.
}
}
示例项目
查看 slim-di。