Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP5中的PHP4构造函数命名约定_Php_Oop - Fatal编程技术网

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

PHP5中的PHP4构造函数命名约定,php,oop,Php,Oop,除了“您不必更改名称”之外,保留PHP4样式的构造函数名称是否存在任何实际问题: ClassName($args) 在PHP5中?否。除此之外,它是丑陋的ish(imo),并删除了一个可能的函数名^^ 没有。除此之外,它还很丑陋(imo),并删除了一个可能的函数名^^ ,这是唯一的缺点。,这是唯一的缺点。对于PHP5,保留它没有问题。但是,如果类有一个_construct()函数,则会调用它。对于PHP5,保留它没有问题。但是,如果该类有一个_construct()函数,则将调用它。因为命名构

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

ClassName($args)

在PHP5中?

否。除此之外,它是丑陋的ish(imo),并删除了一个可能的函数名^^

没有。除此之外,它还很丑陋(imo),并删除了一个可能的函数名^^

,这是唯一的缺点。

,这是唯一的缺点。

对于PHP5,保留它没有问题。但是,如果类有一个_construct()函数,则会调用它。

对于PHP5,保留它没有问题。但是,如果该类有一个_construct()函数,则将调用它。

因为命名构造函数仅保留在PHP5中用于与PHP4向后兼容,因此它们在以后的PHP版本中比
_construct()
更可能被弃用,因此,如果您正在编写一些希望延长使用寿命的内容,那么必须记住这一点。

因为命名构造函数仅保留在PHP5中用于与PHP4向后兼容,因此在以后的PHP版本中,它们比
\uu construct()
更可能被弃用,因此,如果你在写一些你想要长寿的东西,那就要记住这一点。

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

class A
{
    public function A()
    {
    }
}

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

如果有人看到旧式构造函数并将其切换到较不旧式的构造函数,则可能会导致功能中断。此外,如果您必须改变对象继承权,以便B扩展不同的类,则需要手动更改对
parent::a()
的所有调用,或者不熟悉“构造函数是具有类名的方法”构造的人(指在过去5年中学习过PHP的人)可能不知道该怎么做,就会发生微妙的断裂

如果您使用老式的构造函数名称,您会在这种情况下造成一些混乱

class A
{
    public function A()
    {
    }
}

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

如果有人看到旧式构造函数并将其切换到较不旧式的构造函数,则可能会导致功能中断。此外,如果您必须改变对象继承权,以便B扩展不同的类,则需要手动更改对
parent::a()
的所有调用,或者不熟悉“构造函数是具有类名的方法”构造的人(指在过去5年中学习过PHP的人)可能不知道该怎么做,就会发生微妙的断裂

在PHP4中,oop更像是一种黑客行为,这里有一段代码是为PHP5风格的构造函数截取的,但它与PHP4兼容

class Object
{
    function Object()
    {
        $args= func_get_args();
        call_user_func_array
        (
            array(&$this, '__construct'),
            $args
        );
    }

    function __construct()
    {
        // Abstrakt Funktion
    }
}

在PHP4中,oop更像是一种黑客行为,这里有一个PHP5风格的构造函数代码,但它与PHP4兼容

class Object
{
    function Object()
    {
        $args= func_get_args();
        call_user_func_array
        (
            array(&$this, '__construct'),
            $args
        );
    }

    function __construct()
    {
        // Abstrakt Funktion
    }
}

PHP5的目标之一是增加一致性。PHP正朝着让引擎自动调用前缀为_x的代码的方向发展。我们通过新的类选项uu-construct、destruct、call、get、set、sleep等看到了这一点。我们也通过u-autoload看到了这一点。当您使用PHP4样式的构造函数时,使用parent::_construct()也会起作用,这可能会有点混乱。PHP正朝着让引擎自动调用前缀为_x的代码的方向发展。我们通过新的类选项uu-construct、destruct、call、get、set、sleep等看到了这一点。我们也通过u-autoload看到了这一点。当您使用PHP4样式的构造函数时,使用parent::_construct()也可以工作,这可能会有点混乱。