我对codeigniter很新, 我想知道控制器中构造函数的含义是什么。我在codeigniter教程中看到了以下代码 -
class upload extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->helper(form);
}
// rest of the class...
我的问题是何时调用构造函数 - 每次控制器发出请求时都会调用它(例如,控制器类是否为它接收的每个请求实例化?)
答案 0 :(得分:14)
嗯,这是一个更普遍的PHP问题。无论如何,是的,魔术方法__construct()在每次实例化时被(自动)调用,如手册中所示:http://www.php.net/manual/en/language.oop5.decon.php
通常,在CI中没有必要调用构造函数,除非你真的想要一个。在您发布的示例中,代码在类的每个实例化中加载帮助程序 - 这与在每个方法中加载帮助程序相同,只是节省了大量的输入并确保它不会被遗忘。您也可以将想要的库/助手/模型加载到config / autoload.php中相应的自动加载阵列中(在CI手册中选中“自动加载”)
在子控制器中定义构造函数后,您必须调用父构造函数(邮件CI_Controller类),因为创建主CI对象并加载所有类,您需要这些在您的孩子控制器中;如果不这样做,你的子类将单独构造,不会继承。
我希望我明白自己,英语不是我的母语:)
答案 1 :(得分:3)
构造函数是 magic 从字面上看它被称为魔法。 是什么让构造函数很酷,它会在任何方法之前为你做事。因此,如果您有一个管理类,并且有人应该登录才能访问它 - 您可以在构造函数中检查登录,如果未经授权则将其退回。
在构造函数中,您可以加载您的类所需的模型,库,帮助程序等,并且它们可用于类中的任何方法。
您可以加载方法使用的变量。这对模型非常有用。
答案 2 :(得分:0)
不要在最新的apache&中使用_construct()
功能。笨强>
使用helperlin in index()
功能
答案 3 :(得分:0)
这是一个普遍的问题。构造函数是在实例化时自动调用的函数。此功能可帮助我们初始化代码中经常需要的内容,例如当我们必须加载诸如e.t.c表格之类的助手模型时。
$this->load->model('Model_name');
现在,当您在构造函数中编写此行时,无需一次又一次在该类的方法中加载此模型。