Php 对少数参数的依赖注入
我真的不明白为什么我会收到这个错误消息,我希望你们能帮助我: 致命错误:未捕获ArgumentCounter错误:函数App\Controller\Home的参数太少::_-construct(),在第25行的/mnt/c/mvc/index.php中传入了0,而在/mnt/c/mvc/src/Controller/Home.php中正好需要1。php:12堆栈跟踪:#0/mnt/c/mvc/index.php(25):App\controllyer\Home->u-construct()#1{main}在第12行的/mnt/c/mvc/src/Controller/Home.php中抛出 index.phpPhp 对少数参数的依赖注入,php,Php,我真的不明白为什么我会收到这个错误消息,我希望你们能帮助我: 致命错误:未捕获ArgumentCounter错误:函数App\Controller\Home的参数太少::_-construct(),在第25行的/mnt/c/mvc/index.php中传入了0,而在/mnt/c/mvc/src/Controller/Home.php中正好需要1。php:12堆栈跟踪:#0/mnt/c/mvc/index.php(25):App\controllyer\Home->u-construct()#1{
declare(strict_types=1);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
use App\Core\{Router, Request};
use App\Service\View;
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/src/Core/Bootstrap.php';
$routerLoad = Router::load('src/core/Routes.php')
->direct(Request::uri());
$routerAction = new $routerLoad;
$routerAction->action();
$view = new View();
$view->display();
Home.php
namespace App\Controller;
use App\Service\ViewInterface;
use App\Service\View;
class Home implements Controller
{
private ViewInterface $view;
public function __construct(View $view)
{
$this->view = $view;
}
public function action(): void
{
$this->view->addTemplate('layout.tpl');
$this->view->addTlpParam('headline', 'Home');
$this->view->addTlpParam('info', 'Welcome');
$this->view->addTlpParam('name', 'User');
$this->view->display();
}
}
View.php
namespace App\Service;
class View implements ViewInterface
{
private \Smarty $smarty;
private string $template;
public function __construct()
{
$this->smarty = new \Smarty();
$this->smarty->setTemplateDir('/mnt/c/mvc/src/View/templates');
$this->smarty->setCompileDir('/mnt/c/mvc/src/smarty/templates_c');
$this->smarty->setCacheDir('/mnt/c/mvc/src/smarty/cache');
$this->smarty->setConfigDir('/mnt/c/mvc/src/smarty/configs');
}
public function addTemplate(string $template):void
{
$this->template = $template;
}
public function addTlpParam(string $name, $value): void
{
$this->smarty->assign($name, $value);
}
public function display(): void
{
try {
$this->smarty->display($this->template);
} catch (\SmartyException $e) {
} catch (\Exception $e) {
}
}
}
在您的其他脚本中,有东西试图实例化
Home
控制器,但它没有将视图传递给构造函数。“致命错误:未捕获ArgumentCountError:函数App\controller\Home的参数太少::\uu construct(),第25行的/mnt/c/mvc/index.php中传递了0…”您并没有像消息所暗示的那样传递所有参数。index.php中的第25行到底在哪里?在您的其他脚本中,有东西试图实例化Home
控制器,但它没有将视图传递给构造函数。“致命错误:未捕获的ArgumentCountError:函数App\controller\Home的参数太少::u construct(),第25行的/mnt/c/mvc/index.php中传递了0…”您并没有像消息所暗示的那样传递所有参数。index.php中的第25行具体在哪里?