簡體   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