Php 调用未定义的方法CI_Controller::Controller()
我有一个控制器:Php 调用未定义的方法CI_Controller::Controller(),php,codeigniter-2,Php,Codeigniter 2,我有一个控制器: class Start extends CI_Controller{ var $base; var $css; function Start() { parent::Controller(); //error here. $this->base = $this->config->item('base_url'); //error here $this->css = $
class Start extends CI_Controller{
var $base;
var $css;
function Start()
{
parent::Controller(); //error here.
$this->base = $this->config->item('base_url'); //error here
$this->css = $this->config->item('css');
}
function hello($name)
{
$data['css'] = $this->css;
$data['base'] = $this->base;
$data['mytitle'] = 'Welcome to this site';
$data['mytext'] = "Hello, $name, now we're getting dynamic!";
$this->load->view('testView', $data);
}
}
这句话告诉我:
父::控制器()//这里有错误
Call to undefined method CI_Controller::Controller()
如果我删除那一行..我会在下一行中得到一个错误,它说
Call to a member function item() on a non-object
如何防止此类错误发生?在CodeIgniter 2中,构造函数名为
\uu constructor
,而不是类名。因此,您需要调用parent::\u construct()
而不是parent::Controller()
这里有一篇文章,你可以阅读,它展示了CodeIgniter1.x和CodeIgniter2.x之间的一个主要区别
如果您使用的是CI 2.x,那么您的类构造函数应该如下所示:
public function __construct()
{
parent::__construct();
// Your own constructor code
}
如果您正在通过Xampp或类似服务器运行Codeigniter项目,请在中阅读更多信息,将以下代码添加到以下目录中config.php文件的底部;ci_project/application/config/config.php
function my_load($class) {
if (strpos($class, 'CI_') !== 0) {
if (is_readable(APPPATH . 'core' . DIRECTORY_SEPARATOR . $class . '.php' )) {
require_once (APPPATH . 'core' . DIRECTORY_SEPARATOR . $class . '.php');
}
}
}
spl_autoload_register('my_load');
上述守则将有助于:;在核心文件夹中加载类。
我确信这在以下设置中有效;CI-3+、Xampp、Php5.6和or 5.6+
此外,您还可以通过在以下目录中创建名为MY_Controller.php的文件来决定创建并允许其他类引用您自己的控制器(它扩展了原始CI_控制器):CI_project/application/core/并在其中添加以下代码
<?php
class MY_Controller extends CI_Controller {
}
?>
我希望这有帮助
class Admin extends MY_Controller {
//your function here
}