tox2ik/rka-slim-controller-json

此包已被废弃且不再维护。未建议替代包。

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

2.0.3 2016-10-04 13:42 UTC

This package is not auto-updated.

Last update: 2021-06-16 03:44:36 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 控制器 将调用控制器中存在的 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