Когда я создаю контроллер, я загружаю модель ( AccountModel ) в переменную класса "Model" и проверяю, вошел ли пользователь в систему:
function __construct()
{
parent::__construct();
$this->loadModel("AccountModel", "Model");
$account = $this->getUserAccount();
...
}
Неустранимая ошибка в getUserAccount ():
Неустранимая ошибка: вызов функции-члена getAccount () для необъекта в wwwroot / lib / account / account.php в строке 57
Это строка 57, я звоню getAccount()
на моей ранее загруженной модели:
$account = $this->Model->getAccount($_SESSION["account"]["user_account_id"]);
Итак, похоже, $this->Model
не является объектом, но когда я ставлю var_dump($this->Model)
перед вызовом getAccount()
, он говорит: object (AccountModel) # 26 (2) ...
Я также сделал var_dump($this)
, который сбросил контроллер и обнаружил, что переменная класса $Model
существует и является экземпляром AccountModel .
Кто-нибудь может сказать мне, что, черт возьми, происходит?
Кстати, модель назначается так (метод контроллера):
function loadModel($model_name, $var_name)
{
// blah blah blah
$obj = new $class_name();
$this->$var_name = $obj;
}
Обновление:
В __construct (), если я напрямую вызываю getAccount () для моей модели (ранее я вызывал getUserAccount , а затем getAccount внутри) без параметра, PHP выводит ошибку sayin:
Отсутствует аргумент 1 для
AccountModel :: getAccount ()
Но когда я добавляю параметр, он говорит, что он снова не объект.
Решение:
При загрузке моделей метод loadModel () назначает модель экземпляру контроллера и сохраняет каждое имя загруженной модели в свойстве staic. Произошла ошибка, когда контроллер был вызван во второй раз, поэтому второй экземпляр контроллера не получил свою модель. Замененное свойство staitc на свойство объекта (проверка того, что модель уже была вызвана, позволяет избежать использования require_once, что снижает накладные расходы, но теперь нужно будет найти лучшее решение для этой части;) В любом случае, теперь это работает, спасибо всем за помощь.