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


Why construct function creates issue in codeigniter 3?

我是codeigniter 3的新手。X,在codeigniter 3中。当我写

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}。谁能告诉我这是什么?

这是因为当你运行url

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

默认情况下查找控制器的index()

如果你使用像

这样的url
http://ip/cifolder/index.php/controller/function

它将查找控制器的函数

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

function __construct() {
        parent::__construct();
    }

表示没有index()函数它会显示400 error

它正在发生,因为CI正在寻找index(),当你没有提供哪个行动去。对于第一种情况,它不存在,因此抛出错误。但在第二种情况下,它在那里,所以它起作用了。你不能显式调用__construct()

默认url模式查找controller/action。如果没有提供action,它将在该控制器中查找index()

所以当它得到index(),它实例化控制器类和__construct()被调用