Slim3 使用参考是错误的
Posted
技术标签:
【中文标题】Slim3 使用参考是错误的【英文标题】:Slim3 use reference is wrong 【发布时间】:2019-10-27 04:44:42 【问题描述】:我正在尝试用 Slim3 和 composer 准备一个简单的空应用程序。
这是我的前端控制器:
<?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 必须是 请求,给定的 Slim\Http\Request 实例
我必须将这个“用途”添加到我的路由文件中:
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
为什么 php 使用错误的 (Slim) 类进行请求和响应? 我真的必须为每个控制器文件添加前缀吗?
【问题讨论】:
【参考方案1】:我真的必须为每个控制器文件添加前缀吗?
是的。 use
声明每个文件为 documented in the PHP manual:
导入规则是基于每个文件的,这意味着包含的文件将不继承父文件的导入规则。
您可能会也可能不会忽略参数前面的类型。能不能这样做,就看Slim是否使用Reflection来决定是否放$request
和$response
对象。根据您收到的错误消息,我想您可以简单地删除该类型。
【讨论】:
以上是关于Slim3 使用参考是错误的的主要内容,如果未能解决你的问题,请参考以下文章
Slim 3 + Doctrine 2:“用户”类不存在,MappingException
使用 Eloquent ORM 使用 Twig 视图进行 Slim 3 分页