16

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

class upload extends CI_Controller {

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

    // rest of the class...

我的问题是何时调用构造函数 - 每次控制器服务请求时都会调用它(例如,控制器类为它收到的每个请求实例化?)

4

4 回答 4

15

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

通常,在 CI 中没有必要调用构造函数,除非你真的想要一个。在您发布的示例中,代码在类的每个实例化时加载帮助器 - 这与在每个方法中加载帮助器相同,只是节省了大量输入并确保不会忘记它。您也可以将要加载的库/帮助程序/模型放在 config/autoload.php 中的相应自动加载数组中(检查 CI 手册中的“自动加载”)

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

我希望我说清楚了,英语不是我的母语 :)

于 2012-11-25T22:59:06.680 回答
4

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

在构造函数中,您可以加载您的类需要的模型、库、帮助器等,它们可用于类中的任何方法。

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

于 2012-11-26T18:17:36.460 回答
0

不要在最新的 apache 和 codeigniter_construct()中使用函数

使用helperlin in index()功能

于 2016-11-29T04:22:02.710 回答
0

这是一个普遍的问题。构造函数是实例化时自动调用的函数。这个函数帮助我们初始化我们在代码中经常需要的东西,比如当我们必须加载表单等助手模型时

$this->load->model('Model_name');

现在,当您在构造函数中编写此行时,您无需在该类的方法中一次又一次地加载此模型。

于 2020-08-05T05:49:45.933 回答