为什么构造函数会在codeigniter 3中产生问题?

时间:2015-05-15 11:45:48

标签: php codeigniter codeigniter-3

我是codeigniter 3.x的新手,我写的时候是codeigniter 3.x

class Auth extends CI_Controller {

    public function __construct() {
        parent::__construct();
        echo "ya";
    }
}

它显示我的错误

404 Page Not Found

The page you requested was not found.

当我写作

class Auth extends CI_Controller {

    public function __construct() {
        parent::__construct();
        echo "ya";
    }
    public function index() {
        echo "aya";exit;
    }
}

它工作正常并显示输出为{yaaya}。 任何人都可以告诉我这是什么?

2 个答案:

答案 0 :(得分:1)

这背后的原因是你运行网址

  

http://ip/cifolder/index.php/controller

默认情况下会查看此控制器的test_3.find( {"humsavar.Disease": {'$and': [ {"$ne": u'-'}, { "$ne":None}, { "$exists": True} ]} }, {"humsavar.dbSNP": {'$and':[ {"$ne": u'-'}, { "$ne": None}, { "$exists": True} ]}, }, {"humsavar":True, "_id": False} ).count()

如果您使用网址

  

http://ip/cifolder/index.php/controller/function

它会调查控制器的功能

如果您没有在控制器中编写任何函数,只需__construct

index()

这意味着没有index()函数会显示function __construct() { parent::__construct(); }

答案 1 :(得分:0)

这种情况正在发生,因为当您没有提供要采取的行动时,CI正在寻找index()。对于第一种情况,它不存在,因此它抛出了错误。但在第二种情况下它就在那里,所以它有效。你不能明确地致电__construct()

它查找controller/action的默认网址格式。如果未提供action,则会在该控制器中查找index()

因此,当它获得index()时,它会实例化控制器类并调用__construct()