繁体   English   中英

Slim3使用引用是错误的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM