[英]Slim3 Cannot use object of type Slim\Http\Response as array
[英]Slim3 use reference is wrong
我想用Slim3和作曲家准备一个简单的空应用程序。
这是我的前端控制器:
<?php
require '../vendor/autoload.php';
$config=[];
$config['displayErrorDetails'] = true;
$config['addContentLengthHeader'] = false;
$app = new \Slim\App(['settings' => $config]);
foreach(glob("../app/dependencies/*.php") as $dependency){
$dependency=include $dependency;
$dependency($app);
}
foreach(glob("../app/middleware/*.php") as $middleware){
$middleware=include $middleware;
$middleware($app);
}
foreach(glob("../app/routes/*.php") as $route){
$route=include $route;
$route($app);
}
$app->run();
这是我拥有的唯一路径文件:
<?php
return function (\Slim\App $app){
$app->get('/', function (Request $request, Response $response) {
$response->getBody()->write("Hello");
return $response;
});
};
当我运行应用程序时,我收到一个错误:
传递给Closure :: {closure}()的参数1必须是Request的实例,给出了Slim \\ Http \\ Request的实例
我必须将此“使用”添加到我的路径文件中:
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
为什么php为请求和响应采取错误(Slim)类? 真的我必须为每个控制器文件添加前缀吗?
真的我必须为每个控制器文件添加前缀吗?
是。 use
声明是每个文件,如PHP手册中所述 :
导入规则是基于每个文件的,这意味着包含的文件不会继承父文件的导入规则。
您可能会或可能不会在参数前面省略类型。 是否能够这样做取决于Slim是否使用Reflection来确定是否放置$request
和$response
对象。 基于您收到的错误消息,我想您可以简单地删除该类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.