一尘不染

__construct()与SameAsClassName()在PHP中的构造函数

php

__construct()在PHP中使用构造函数代替类名有什么好处吗?

范例(__construct):

class Foo {
    function __construct(){
        //do stuff
    }
}

示例(命名):

class Foo {
    function Foo(){
        //do stuff
    }
}

__construct从PHP 5开始就可以使用该方法(第一个示例)。

从PHP版本4到版本7,可以使用与该类的名称相同的方法作为构造函数(第二个示例)。


阅读 324

收藏
2020-05-29

共1个答案

一尘不染

我同意gizmo,优点是这样,如果您重命名类,则不必重命名。干燥。

同样,如果您有儿童班,您可以致电

parent::__construct()

调用父构造函数。如果进一步更改子类继承的类,则不必将构造调用更改为父类。

看来这是一件小事,但是缺少将构造函数调用名称更改为您的父类可能会产生细微(而不是细微)的错误。

例如,如果您将类插入到自己的继承人中,但是忘记更改构造函数调用,则可以开始调用祖父母而不是父母的构造函数。这通常可能会导致不良结果,而这些结果可能很难注意到。

另请注意

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

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

2020-05-29