基本上,下面是我现在的代码:
class MY_Log extends CI_Log {
/**
* Variable storing the CodeIgniter instance.
*
* @access private
* @since v0.1.0.0
*/
private $CI;
/**
* Constructor for later use by internal
* methods.
*
* @access public
* @since v0.1.0.0
*/
public function __construct()
{
// Extend the parent logging.
parent::__construct();
$this->$CI =& get_instance();
}
}
我收到以下错误;
Fatal error: Class 'CI_Controller' not found in /<deleted>/system/core/CodeIgniter.php on line 233
这是用户指南描述它的方式。
答案 0 :(得分:4)
我想在加载CI_Controller类之前调用日志库函数时会发生此错误。这可能发生在您的应用程序例程的早期阶段。因此,您应该在不使用$this->$CI =& get_instance();
的情况下扩展日志库。
答案 1 :(得分:3)
很奇怪。我刚刚复制了你的案例(提供的信息),我没有遇到任何问题。但要确保一些事情:
application/libraries/My_log.php
您将控制器中的库称为
$this->load->library('log');
$this->log->do_something();
即,不使用“My_log”而是使用父库的名称。事实上,你扩展它,而不是创建另一个,所以CI希望你把它称为与原来相同的
您的原始文件正确写入了以下行(在CI之前没有$符号)
$this->CI =& get_instance();
我提供的代码的测试用例在我的开发机器上运行正常(Windows 7 WAMP php 5.3.8)。我会等待更多的信息。
答案 2 :(得分:0)
如果你还没有,请尝试将它放在MY_Log.php的顶部:
&lt;?php defined('BASEPATH')或退出('不允许直接访问脚本');
如果它没有包含在php分隔符中,那么你的类MY_Log可能实际上并没有被php解析。如果是这种情况,则CI将看到文件MY_Log.php,并期望CI_Log由MY_Log.php中声明的类扩展。但是,如果您的类不在PHP分隔符中,则CI_Log实际上不会被扩展,这可能会导致奇怪的错误。
答案 3 :(得分:0)
如果这有助于任何人,我遇到了同样的问题,并发现它只发生在其中包含+
的网址上,例如作为永久链接的一部分。 CI变得混乱;我阻止了+
个符号出现在网址中,一切都很顺利。