【发布时间】:2017-06-06 19:43:25
【问题描述】:
我已经在这几个小时了,似乎无法弄清楚为什么它不起作用。这是我第一次使用 SLIM,也是我第一次接触中间件。我正在尝试关注超薄网站上列出的tutorial,但无法开始工作。
我的引导代码:
<?php
require '../vendor/autoload.php';
$app = new Slim\Slim();
$app->get('/test', function() {
echo 'Hello, World';
});
$mw = function ($request, $response, $next) {
$response->getBody()->write('BEFORE');
$response = $next($request, $response);
$response->getBody()->write('AFTER');
return $response;
};
$app->add($mw);
$app->run();
当我在没有中间件的情况下只运行我的超薄 url 时,它运行良好。当我运行http://mysite/test 时,我得到Hello, World 作为输出。但是,当我添加苗条网站上列出的中间件代码时,我收到以下错误:
Catchable fatal error: Argument 1 passed to Slim\Slim::add() must be an instance of Slim\Middleware, instance of Closure given, called in /Applications/XAMPP/xamppfiles/htdocs/project/api/public/index.php on line 22 and defined in /Applications/XAMPP/xamppfiles/htdocs/academy/api/vendor/slim/slim/Slim/Slim.php on line 1267
我错过了什么吗?中间件是否需要其他设置?在这方面,苗条的文档并不是很有帮助。任何帮助表示赞赏。
【问题讨论】:
-
去掉
use ($app)还能用吗? -
@BizzyBob 抱歉,打算删除它。那是我只是想去上班,但我最初是用
use ($app)dong ti,但它仍然不起作用 -
你可以试试这个 $container = $app->getContainer(); $container["mw"] = $mw; $app->add($mw);
-
@BilasSarker 我得到
Call to undefined method Slim\Slim::getContainer() in /Applications/XAMPP/xamppfiles/htdocs/academy/api/public/index.php on line 21 -
快速浏览一下链接中的教程,
$app = new Slim\Slim();应该是$app = new \Slim\App();,这可能是导致问题的原因吗?
标签: php rest slim middleware