CodeIgniter自定义库错误:调用非对象上的成员函数 [英] CodeIgniter custom library error: Call to a member function on a non-object
问题描述
我正在尝试构建一个自定义库,其中将包含整个网站都可以使用的功能。在 /应用程序/库
内部,我制作了一个新文件 CustomFuncts
:
I'm trying to build a custom library which will contain functions that would be available through the whole site. Inside /application/libraries
I've made a new file CustomFuncts
:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* @brief CommonFuncts
* This class is used to provide common user functions to the whole application.
*
* @version 1.0
* @date May 2012
*
*
*/
class CommonFuncts extends CI_Controller {
protected $ci;
/**
* function constructor
*/
function __construct()
{
$this->ci =& get_instance();
}
/**
* @brief checkCookie
*
* Checks for a previous cookie, and if exists:
* @li Loads user details to CI Session object.
* @li Redirects to the corresponding page.
*
*/
public function verificaCookie(){
$this->ci->load->view('index');
}
}
/* End of file CommonFuncts.php */
/* Location: ./application/libraries/CommonFuncts.php */
在控制器 welcome.php
中:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see http://codeigniter.com/user_guide/general/urls.html
*/
public function index()
{
$this->load->library('commonFuncts');
$this->commonFuncts->verificaCookie();
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
我收到以下错误消息:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Welcome::$commonFuncts
Filename: controllers/welcome.php
Line Number: 23
Fatal error: Call to a member function verificaCookie() on a non-object in
/var/www/vhosts/unikodf.com/httpdocs/application/controllers/welcome.php on line 23
我尝试了很多事情,包括在库中扩展 CI_Controller
并使用 $ this-> load-> view'代替
$ this-> ci-> load-> view`,但仍然收到相同的消息。
I've tried many things, including extending in the library the CI_Controller
and using $this->load->view' instead of
$this->ci->load->view` but still I'm getting the same message.
推荐答案
如果您的库扩展了 CI_Controller
。这意味着您实际上是在扩展控制器的功能。而是这样声明您的库:
If your library extends CI_Controller
. That means that you are actually extending the functionality of the controllers. Instead declare your library like this:
class CommonFuncts { }
您不需要从 CI_Controller
继承,因为您编写的不是控制器,而库是不属于MVC模型。它是单个类,可以扩展框架的功能,解决一个常见问题或具有许多控制器使用的功能。
You don't need to inherit from CI_Controller
, since you are writing a library not a controller and a library is not part of the MVC model. It's single class which extends the features of the framework, fixes a common issue or has a functionality used by many controllers.
要访问它的方法,请使用:
To access it's methods use:
$this->load->library('CommonFuncts');
$this->commonfuncts->verificaCookie();
如果要简化调用库的名称,请使用:
// The second argument is the optional configuration passed to the library
// The third argument is the name with which you would like to access it
$this->load->library('CommonFuncts', '', 'common');
$this->common->verificaCookie(); // /\ = configuration
// /\/\/\ = name
这篇关于CodeIgniter自定义库错误:调用非对象上的成员函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!