__construct和与类同名的函数有什么区别?

2022-08-30 21:39:54

可能的重复:
__construct的功能是什么?

__construct函数和与类同名的函数之间有什么区别吗?

class foo {
    function foo ($something){
        echo "I see ".$something." argument";
    }
}

class bar {
    function __construct ($something){
        echo "<br />
            I see ".$something." argument again";
    }
}

$foo = new foo("foo");
$bar = new bar("bar");

答案 1

命名的方法是执行构造函数的 PHP4 方法。

为了向后兼容,如果 PHP 5 找不到给定类的 __construct() 函数,它将按类的名称搜索旧式构造函数。实际上,这意味着唯一存在兼容性问题的情况是,如果该类具有名为 __construct() 的方法,该方法用于不同的语义。

从 PHP 5.3.3 开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不会影响非命名空间类。

http://www.php.net/manual/en/language.oop5.decon.php


答案 2

与类相同的构造函数是 PHP4 的向后兼容性功能。自 PHP 5.3.3 起,它不适用于命名空间类

如果同时存在 和 函数,则 将 用作构造函数。__constructclass-named__construct


推荐