akrabat/rka-slim-controller

为 Slim 框架动态实例化的控制器类

2.0.1 2015-01-07 09:54 UTC

This package is auto-updated.

Last update: 2024-09-05 19:47:34 UTC


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