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