#php
#php
Вопрос:
я действительно не понимаю, почему я получаю это сообщение об ошибке, и я надеюсь, что вы, ребята, сможете помочь:
Неустранимая ошибка: неперехваченный аргумент: слишком мало аргументов для функции App ControllerHome::__construct(), 0 передано в /mnt/c/mvc/index.php в строке 25 и ровно 1 ожидается в /mnt/c/mvc/src/Controller/Home.php:12 Трассировка стека: #0 /mnt/c/mvc/index.php(25): добавлено AppControlylerHome->__construct() #1 {main} /mnt/c/mvc/src/Controller/Home.php в строке 12
index.php
declare(strict_types=1);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
use AppCore{Router, Request};
use AppServiceView;
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 AppController;
use AppServiceViewInterface;
use AppServiceView;
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 AppService;
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) {
}
}
}
Комментарии:
1. Где-то в ваших других сценариях что-то пытается создать экземпляр
Home
контроллера и не передает представление в конструктор.2. «Неустранимая ошибка: неперехваченный аргумент: слишком мало аргументов для функции App ControllerHome::__construct(), 0 передано в /mnt/c/mvc/index.php в строке 25 …» Вы передаете не все аргументы, как следует из сообщения. Где именно находится строка 25 в index.php ?