Loading...
PHP/MySQL | Не работает метод

<?php


namespace vendor\core\base;


abstract class Controller
{
public $route = [];
public $layout;
public $view;
public $vars = [];

public function __construct($route)
{
$this->route = $route;
$this->view = $route['action'];
}

public function getView()
{
$vObj = new View($this->route, $this->layout, $this->view);
$vObj->render($this->vars);
}

public function set($vars)
{
$this->vars = $vars;
}
}

вызов

<?php


namespace app\controllers;


class MainController extends AppController
{
public function indexAction()
{
$name = 'Имя';
$this->set(compact('name'));
}
}

работает

хочу изменить вызов на

$this->set('name');

поэтому переписываю метод

public function set($vars)
{
$this->vars = compact($vars);
}

не работает

что не так, может я что-то не вижу?
Объявление AppController в студию.
monobogdan (31.05.2019 в 17:46)
Объявление AppController в студию.


в одной директории с MainController
наследует Controller

это не нужно, изначально работает, я compact() хочу убрать при вызове и переместить её в метод set(), чтобы при вызове только имена переменных прописывать
Вероломство, $this->set($name);
не?
Вероломство (31.05.2019 в 17:51)
monobogdan (31.05.2019 в 17:46)
Объявление AppController в студию.


в одной директории с MainController
наследует Controller

это не нужно, изначально работает, я compact() хочу убрать при вызове и переместить её в метод set(), чтобы при вызове только имена переменных прописывать

Бэктрейс при вызове в студию.

https://www.php.net/manual/ru/function.debug-print-backtrace.php
monobogdan (31.05.2019 в 18:58)
Вероломство (31.05.2019 в 17:51)
monobogdan (31.05.2019 в 17:46)
Объявление AppController в студию.


в одной директории с MainController
наследует Controller

это не нужно, изначально работает, я compact() хочу убрать при вызове и переместить её в метод set(), чтобы при вызове только имена переменных прописывать

Бэктрейс при вызове в студию.

https://www.php.net/manual/ru/function.debug-print-backtrace.php


vendor\core\base\Controller->set(name)
Avenax (31.05.2019 в 18:58)
Вероломство, $this->set($name);
не?


неа
Вероломство, всё потому-что, ты передаёшь просто имя переменно, а значение нет
Вероломство, имя то положит, а что в нём лежать то будет? вот и ошибка
Вероломство (31.05.2019 в 19:07)
monobogdan (31.05.2019 в 18:58)
Вероломство (31.05.2019 в 17:51)
monobogdan (31.05.2019 в 17:46)
Объявление AppController в студию.


в одной директории с MainController
наследует Controller

это не нужно, изначально работает, я compact() хочу убрать при вызове и переместить её в метод set(), чтобы при вызове только имена переменных прописывать

Бэктрейс при вызове в студию.

https://www.php.net/manual/ru/function.debug-print-backtrace.php


vendorcorebaseController->set(name)

Вывод ошибок включен? Может compact в другом неймспейсе?
________
посл. ред. 31.05.2019 в 19:11; всего 1 раз(а); by monobogdan
Онлайн: 1
Время:
Gen. 0.0948
(c) Bym.Guru 2010-2025