【发布时间】:2016-10-20 18:07:39
【问题描述】:
我正在尝试在 Slim 中使用控制器,但不断收到错误
PHP 可捕获的致命错误:参数 1 传递给
TopPageController::__construct() 必须是 ContainerInterface 的实例,
给定 Slim\Container 的实例
我的 index.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
require 'settings.php';
spl_autoload_register(function ($classname) {
require ("../classes/" . $classname . ".php");
});
$app = new \Slim\App(["settings" => $config]);
$app->get('/', function (Request $request, Response $response) {
$response->getBody()->write("Welcome");
return $response;
});
$app->get('/method1', '\TopPageController:method1');
$app->run();
?>
我的 TopPageController.php
<?php
class TopPageController {
protected $ci;
//Constructor
public function __construct(ContainerInterface $ci) {
$this->ci = $ci;
}
public function method1($request, $response, $args) {
//your code
//to access items in the container... $this->ci->get('');
$response->getBody()->write("Welcome1");
return $response;
}
public function method2($request, $response, $args) {
//your code
//to access items in the container... $this->ci->get('');
$response->getBody()->write("Welcome2");
return $response;
}
public function method3($request, $response, $args) {
//your code
//to access items in the container... $this->ci->get('');
$response->getBody()->write("Welcome3");
return $response;
}
}
?>
谢谢。我正在使用 Slim 3。
【问题讨论】:
-
您的 ContainerInterface 上没有正确的命名空间。应该是
Interop\Container\ContainerIterface
标签: php model-view-controller slim