【问题标题】:Codeigniter constructors. What is the difference?Codeigniter 构造函数。有什么区别?
【发布时间】:2011-03-18 19:52:21
【问题描述】:

我在 CI 中看到了两种类型的构造函数。比如……

class Blog extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }
}

class Blog extends CI_Controller
{
       function Blog()
       {
                parent::Controller();
       }
}

它们之间有什么区别?我不确定该选择哪个。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    如果您使用的是 Codeigniter 2+(您应该是)...第二个选项将不起作用,因为它使用 PHP4 样式的构造函数调用。

    实际上,第二个选项无论如何都不起作用,因为 php4 构造函数调用需要匹配您正在扩展的类...

    所以,是的,使用第一个。它使用 PHP5 风格的构造函数调用。

    对于more information on PHP5 constructors

    【讨论】:

      【解决方案2】:

      使用名称为 __construct() 的函数是 PHP 5 中编写构造函数的方式。

      使用与类同名的函数是 PHP 4 中编写构造函数的方式(出于兼容性原因,这些函数在 PHP 5 中仍然有效——即使您更喜欢__construct()


      作为参考,请查看Constructors and Destructors -- 引用其中的一部分

      为了向后兼容,如果 PHP 5 找不到__construct() 函数 对于给定的类,它将搜索 旧式构造函数,由 类的名称。

      【讨论】:

      • @Cyber​​Junkie 也读到这个:stackoverflow.com/questions/1223766/…
      • 虽然 php5 确实允许使用 php4 样式的构造函数,但我相信 Codeigniter 本身从 2.0.0 起就删除了对这种样式构造函数调用的支持
      • 如果您正在运行 php5,或者没有机会将您的应用程序移植到 php4,您仍应始终使用 __construct()
      【解决方案3】:

      看起来第一个是 php 5 实现,第二个是 php 4 实现。

      【讨论】:

        【解决方案4】:

        php 5 改变了构造函数的调用和使用方式,您应该使用第二个选项。 我认为这不是 codeigniter 特有的,而是 php5 通用的

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-30
          • 1970-01-01
          • 2015-12-17
          • 2011-10-17
          • 2011-10-23
          • 2015-02-13
          相关资源
          最近更新 更多