CodeIgniter中__construct()的功能是什么?

时间:2016-06-03 20:04:24

标签: php codeigniter construct

我使用CodeIgniter框架,我是新手。在以下代码中,__construct()函数用于加载模型。

  • 为什么我需要使用__construct()
  • 我应该何时使用此功能?
  • 什么是parent::__construct()

代码

function __construct() {
    parent::__construct();
    $this->load->model('example');
}

7 个答案:

答案 0 :(得分:1)

构造函数允许您在整个类中使用它。 这样您就不必在每种方法中加载模型/语言/设置。

假设您有要为该类加载的模型和语言,可以在构造函数中执行此操作。如果您在类中有一个电子邮件方法,并且只在该类中使用电子邮件,则不必在构造函数中设置此方法,而是在方法中。这样,对于不使用它的所有其他方法,它不会被加载。

    class Contact extends CI_Controller {

      public function __construct(){
        parent::__construct();
        $this->load->model('contact_model', 'contact');
      }

      public function index(){
        $data['contact'] = $this->contact->getContact();
        $this->load->view('contact', $data);
      }

      public function send_mail(){
        /* Mail configuration - ONLY USED HERE */
        $config = array('protocol' => 'mail',
                    'wordwrap' => FALSE,
                    'mailtype' => 'html',
                    'charset'   => 'utf-8',
                    'crlf'      => "\r\n",
                    'newline'   => "\r\n",
                    'send_multipart' => FALSE
                    );
        $this->load->library('email', $config);
        $records = $this->contact->getCompany();

        $this->email->from( $setmail, $records['CompanyName'] );
        $this->email->to( $to );
        $this->email->subject( $subject );
        $this->email->message( $html );
        $this->email->send();
      }

    }

来自php:http://php.net/manual/en/language.oop5.decon.php

  

PHP 5允许开发人员为类声明构造函数方法。具有构造函数方法的类在每个新创建的对象上调用此方法,因此它适用于对象在使用之前可能需要的任何初始化。

答案 1 :(得分:0)

可以在控制器上应用

construct,这将帮助您立即加载库和帮助程序,而无需在要使用它的每个方法上进行重写以重新加载它们……!可以使用构造

的示例
  

在这一行代码中,我向您展示了我们可以在哪里使用它。

<?php 
Class example extends CI_Controller{

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

    $this->load->helper(array('form', 'url'));
    $this->load->library(array('session','form_validation'));
}

 public function useFile(){
   //here you don't need to reload your library and helper again just type your code 

}
?>

您将在单个Controller上加载库和帮助程序。我们加载这些文件以执行某些功能,例如获取用户数据会话,以表单形式添加验证,例如强制用户填充所需的所有输入字段等。

You can read more about Contruct

答案 2 :(得分:0)

您可以检查CodeIgniter documentation

这些方法是您的类的构造函数。

如果您需要设置一些默认值或在实例化类时运行默认进程,则构造函数很有用。构造函数无法返回值,但可以执行一些默认工作。

如果打算在任何一个Controller中使用构造函数,则必须放置__construct方法。

答案 3 :(得分:0)

1:为什么我需要使用__construct()? 2:何时​​应使用此功能? 3:什么是parent :: __ construct()?

1-Ans:使用__Construct()的原因是预先定义的,并且在C.I中被用作全局加载任何函数

2-Ans:最好使用此函数,因为它是全局的。假设您要在函数A,函数B和函数C中加载任何模型,那么在加载模型时,将其加载到Construct()中并以Global方式工作,并加载了所有功能。

3-Ans:全局到所有功能

致谢

答案 4 :(得分:0)

如果你需要设置一些默认值,或者在你的类被实例化时运行一个默认进程,构造函数很有用。构造函数不能返回值,但它们可以做一些默认的工作。

答案 5 :(得分:-1)

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">

<input type="submit" name="delete" value="&#xf2ed;" class=""/>
<table>
  <tr>
    <td><div class="secodOption"><input type="submit" value="" name="delete"/></div></td>
   </tr>
</table>

答案 6 :(得分:-1)

 function __construct(){
        parent::__construct();
        //predefined view,models,etc..,
      }

__ construct函数让您在类的顶部定义模型,视图,帮助器和其他库。 是这些模型,视图属于该类 因此,您无需为调用或创建的每个函数加载这些 创建完成后,它将负责您课程的其余部分。

public function __construct(){
        parent::__construct();
        $this->load->model('your_model_name');
        $this->load->view('your_view_name');
      }