Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对少数参数的依赖注入_Php - Fatal编程技术网

Php 对少数参数的依赖注入

Php 对少数参数的依赖注入,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{

我真的不明白为什么我会收到这个错误消息,我希望你们能帮助我:

致命错误:未捕获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.php

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行具体在哪里?