在 SLIM 框架中使用中间件时出错
Error Using Middleware in SLIM Framework
我已经在这里工作了几个小时了,似乎无法弄清楚为什么它不起作用。这是我第一次使用 SLIM,也是我第一次接触中间件。我正在尝试按照 slim 网站上列出的 tutorial 进行操作,但就是无法开始工作。
我的bootstrap代码:
<?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 没有中间件时 运行 没问题。当我 运行t http://mysite/test 时,我得到 Hello, World
作为输出。但是当我添加 slim 网站上列出的中间件代码时,我收到以下错误:
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
我错过了什么吗?中间件是否需要其他设置? slim 文档在这方面不是很有帮助。任何帮助表示赞赏。
您似乎已经安装了 Slim 2。您还在混合使用 Slim 2 和 Slim 3 语法。要安装 Slim 3,请执行以下命令。
$ composer install slim/slim
然后使用如下代码:
<?php
require "vendor/autoload.php";
$app = new \Slim\App;
$mw = function ($request, $response, $next) {
$response->getBody()->write("BEFORE");
$response = $next($request, $response);
$response->getBody()->write("AFTER");
return $response;
};
$app->add($mw);
$app->get("/test", function ($request, $response) {
echo "Hello, World";
});
$app->run();
我已经在这里工作了几个小时了,似乎无法弄清楚为什么它不起作用。这是我第一次使用 SLIM,也是我第一次接触中间件。我正在尝试按照 slim 网站上列出的 tutorial 进行操作,但就是无法开始工作。
我的bootstrap代码:
<?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 没有中间件时 运行 没问题。当我 运行t http://mysite/test 时,我得到 Hello, World
作为输出。但是当我添加 slim 网站上列出的中间件代码时,我收到以下错误:
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
我错过了什么吗?中间件是否需要其他设置? slim 文档在这方面不是很有帮助。任何帮助表示赞赏。
您似乎已经安装了 Slim 2。您还在混合使用 Slim 2 和 Slim 3 语法。要安装 Slim 3,请执行以下命令。
$ composer install slim/slim
然后使用如下代码:
<?php
require "vendor/autoload.php";
$app = new \Slim\App;
$mw = function ($request, $response, $next) {
$response->getBody()->write("BEFORE");
$response = $next($request, $response);
$response->getBody()->write("AFTER");
return $response;
};
$app->add($mw);
$app->get("/test", function ($request, $response) {
echo "Hello, World";
});
$app->run();