Я согласен с Джимми. Ваши вспомогательные и библиотечные классы не должны зависеть от какого-либо конкретного контроллера в приложении. Например, если у вас есть помощник «заголовок страницы», он не должен зависеть от какого-либо конкретного поведения вашего контроллера администратора. Что делать, если вы хотите использовать помощник страницы в другом приложении, в котором нет контроллера администратора? Или что, если вы внесете изменения в контроллер администратора в будущем, теперь вы должны убедиться, что эти изменения не сломают ваш помощник.
Если вашей вспомогательной функции требуется какой-то конкретный бит данных, который есть у контроллера администратора, вы можете передать его в качестве параметра функции от контроллера. Таким образом, помощник является зависимостью контроллера, в отличие от контроллера, являющегося зависимостью помощника.
Кроме того, это сообщение об ошибке означает, что все, что вы вызываете, не было создано должным образом. Итак, вы, вероятно, делаете что-то вроде:
$this->load();
from within the helper. However, in the helper,
$this
is undefined (hence the 'non object' error). CodeIgniter provides a way to load models, libraries, and views from outside of a controller. But, as far as I know, it doesn't allow you to do this for controllers. That's fine though, for the reasons stated above. Gotta be careful when you introduce dependencies.
person
GloryFish
schedule
22.06.2009