__construct()vs与class同名的方法

Joe*_*Joe 11 php

我最近开始使用php并且想知道__construct()和有一个与类同名的方法之间的区别?

是否有理由使用它?我可以解决的是它是否覆盖了名为Foo的方法,还是它更适合你喜欢的方法?

例如

class Foo {

    function Foo()
    {
       echo 'Foo stated<br>';
    }

    function __construct() {
       echo 'Construct started<br>';
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Pet*_*tai 8

使用__construct()是更新的PHP5更多以OOP为重点的方法来调用构造函数.使用与该类同名的方法是旧的弃用方法,它不会像PHP 5.3.3那样用作命名空间类的构造函数.

构造函数和析构函数页面:

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

与其他方法不同,当使用与父__construct()方法不同的参数覆盖__construct()时,PHP不会生成E_STRICT级错误消息.

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


Rob*_*ert 7

"如果PHP 5找不到给定类的__construct()函数,它将通过类的名称搜索旧式构造函数.实际上,这意味着唯一具有兼容性问题的情况是class有一个名为__construct()的方法,用于不同的语义."

资料来源: http ://www.php.net/manual/en/language.oop5.decon.php


Ser*_*min 3

Foo() 是 php4 方式(已弃用), __construct() 是 php5 方式。php 会首先查找 __construct,如果没有找到,就会使用 Foo