PHP5中的PHP4构造函数命名约定

Don*_*Don 1 php oop

除了"你不必更改名称"之外,保留PHP4样式构造函数名称是否存在任何实际问题:

ClassName($args)
Run Code Online (Sandbox Code Playgroud)

在PHP5?

Dan*_*uis 9

因为命名构造函数仅保留在PHP5中以便与PHP4向后兼容,所以它们更有可能在以后的PHP版本中被弃用__construct(),所以如果你正在写一些你打算长寿的东西,那就要记住了.


Ala*_*orm 6

如果你使用旧式的构造函数名称,那么你会在这种情况下产生一些混乱

class A
{
    public function A()
    {
    }
}

class B extends A
{
    public function B()
    {
        //how do/should I call the parent constructor?
        //parent::A(); ?
        //parent::__construct(); ?
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人看到旧样式构造函数并将其切换到较旧的样式构造函数,则可能会破坏功能.此外,如果你必须兼顾你的对象层次,以便B扩展另一个类,你需要手动更改所有调用parent::A(),或者不熟悉"构造函数是一个带有类名的方法"构造的人(意思是任何学过的人)过去5年中的PHP)可能不知道这样做会发生微妙的破坏.