代码显示控制器构造函数

2022-08-30 23:32:20

我对codeigniter很陌生,我想知道控制器中构造函数的含义是什么。我在代码符号教程中看到了以下代码 -

class upload extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->helper(form);
    }

    // rest of the class...

我的问题是什么时候调用构造函数 - 它是否在每次控制器为请求提供服务时调用它(例如,控制器类是针对它收到的每个请求实例化的?


答案 1

好吧,这是一个更一般的PHP问题。无论如何,是的,魔术方法__construct()在类的每次实例化时都会被(自动)调用,正如您在手册中看到的那样:http://www.php.net/manual/en/language.oop5.decon.php

通常,在 CI 中不需要调用构造函数,除非您确实想要一个构造函数。在您发布的示例中,代码在类的每个实例化时加载帮助程序 - 这与在每个方法中加载帮助程序相同,只是节省了大量的键入并确保它不会被遗忘。或者,您可以将要加载的 alywas 库/助手/模型放在配置/自动加载.php的相应自动加载数组中(在 CI 手册中选中“自动加载”)

一旦你在你的子控制器中定义了一个构造函数,你就不得不调用父构造函数(邮件CI_Controller类),因为有主CI对象被创建和所有类加载的地方,你也需要这些在子控制器中;如果不这样做,你的子类将单独构造并且不会继承。

我希望我让自己清楚,英语不是我的母语:)


答案 2

构造函数是魔术 从字面上看,它被称为魔术方法。使构造函数很酷的是,它会在任何方法之前为您做一些事情。因此,如果您有一个管理员类,并且应该有人登录才能访问它 - 您可以在构造函数中检查登录名,并在未经授权的情况下将其反弹。

在构造函数中,您可以加载类所需的模型,库,帮助程序等,并且它们将可用于类中的任何方法。

您可以加载方法使用的变量。这对模型非常有用。


推荐