Функция доступа в контроллере от помощника - PullRequest
1 голос
/ 22 июня 2009

Я только начал использовать CodeIgniter несколько часов назад, и я столкнулся с некоторыми проблемами. Я пытаюсь вызвать функцию, которая в данный момент находится в контроллере с именем admin.php. Я пытаюсь получить доступ к этому от помощника. Как бы я сделал это правильно? Я перепробовал почти все, но ничего не работает, так как я получаю следующую ошибку:

Fatal error: Call to a member function login() on a non-object

Любая помощь по этому вопросу будет высоко ценится

1 Ответ

2 голосов
/ 22 июня 2009

Я согласен с Jimyi. Ваши вспомогательные и библиотечные классы должны быть независимыми от любого конкретного контроллера в приложении. Например, если у вас есть помощник «заголовок страницы», он не должен зависеть от какого-либо конкретного поведения вашего администратора. Что, если вы хотите использовать помощник по страницам в другом приложении, в котором нет контроллера администратора? Или что, если вы внесете изменения в контроллер администратора в будущем, теперь вы должны убедиться, что эти изменения не сломают вашего помощника.

Если вашей вспомогательной функции требуется какой-то конкретный бит данных, который имеется у администратора, вы можете передать его в качестве параметра функции от контроллера. Таким образом, помощник является зависимостью от контроллера, а не контроллером является зависимость от помощника.

Кроме того, это сообщение об ошибке означает, что все, что вы вызываете, не было должным образом создано. Итак, вы, вероятно, делаете что-то вроде:

$this->load();

изнутри помощника. Однако в помощнике

$this
не определено (следовательно, ошибка «не объект»). CodeIgniter предоставляет способ загрузки моделей, библиотек и представлений вне контроллера. Но, насколько я знаю, это не позволяет вам делать это для контроллеров. Это нормально, хотя, по причинам, указанным выше. Должен быть осторожен, когда вы вводите зависимости.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...