我刚开始使用CodeIgniter几个小时前,我遇到了一些问题。我正在尝试调用一个函数,该函数当前位于名为admin.php
的控制器中。我试图从帮助器访问这个。我该怎么做呢?我几乎尝试了一切,但似乎没有任何工作,因为我收到以下错误:
Fatal error: Call to a member function login() on a non-object
非常感谢有关此问题的任何帮助
答案 0 :(得分:2)
我同意吉米伊。您的帮助程序和库类应独立于应用程序中的任何特定控制器。例如,如果您有“页面标题”帮助程序,则它不应该依赖于管理控制器的任何特定行为。如果您想在另一个没有管理控制器的应用程序中使用页面助手,该怎么办?或者如果你对管理控制器进行了更改,那么现在你必须确保这些更改不会破坏你的帮助。
如果您的辅助函数需要管理控制器具有的某些特定数据,您可以将其作为函数参数从控制器传递。这样,助手是控制器的依赖,而不是控制器是助手的依赖。
此外,该错误消息表示您正在调用的任何内容尚未正确实例化。所以你可能正在做类似的事情:
$this->load();
来自助手。但是,在帮助器中,
$this未定义(因此“非对象”错误)。 CodeIgniter提供了一种从控制器外部加载模型,库和视图的方法。但是,据我所知,它不允许你为控制器这样做。由于上述原因,这很好。引入依赖项时要小心。