我在CI中看到两种类型的构造函数。例如......
class Blog extends CI_Controller
{
function __construct()
{
parent::__construct();
}
}
和
class Blog extends CI_Controller
{
function Blog()
{
parent::Controller();
}
}
他们之间有什么区别?我不知道该选哪个。
答案 0 :(得分:6)
如果您正在使用Codeigniter 2+(您应该使用它)......第二个选项将不起作用,因为它使用PHP4样式的构造函数调用。
实际上,第二个选项无论如何都行不通,因为php4构造函数调用需要匹配你正在扩展的类......
所以是的,使用第一个。它使用PHP5样式的构造函数调用。
答案 1 :(得分:5)
使用名称为__construct()
的函数是构造函数在PHP 5中编写的方式。
使用与类名相同的函数是构造函数在PHP 4 中编写的方式(并且出于兼容性原因,那些仍在PHP 5中工作 - 即使您更喜欢{{1} })
作为参考,请查看Constructors and Destructors - 引用其中的一部分:
为了向后兼容,如果是PHP 5 找不到
__construct()
功能 对于给定的类,它将搜索 旧式构造函数,由 这个班的名字。
答案 2 :(得分:1)
看起来第一个是php 5实现,第二个是php 4实现。
答案 3 :(得分:1)
php 5改变了构造函数的调用和使用方式,你应该使用第二个选项。 我认为这不是特定于codeigniter和一般的php5