将控制器用作对象的平滑且简短的方式(不是静态方式)
在 index.php 中
namespace MyApp;
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require __DIR__ . '/../vendor/autoload.php';
$app->get('/myroute', [new Controller\MyClass, 'get']); // <=== that is pretty short and neat
$app->post('/myroute', [new Controller\MyClass, 'post']);
$app->map(['GET', 'POST'], '/myotherrout', [new Controller\MyOtherClass, 'run']);
在控制器/MyClass 中:
namespace MyApp\Controller;
class MyClass{
public function __construct(){
//some code
}
public function get(\Slim\Http\Request $request, \Slim\Http\Response $response, $args = []) {
//some super foobar code
}
public function post(\Slim\Http\Request $request, \Slim\Http\Response $response, $args = []) {
//some other code
}
Controller\MyClass 是通过使用 PSR 自动加载来解决的
在控制器/MyOtherClass 中:
namespace MyApp\Controller;
class MyOtherClass{
public function __construct(){
//some code
}
public function run(\Slim\Http\Request $request, \Slim\Http\Response $response, $args = []) {
//some amazing foobar code
}