魔术方法__construct()和__destruct()的用法是什么。他们总是需要吗?

时间:2012-05-08 21:22:45

标签: php

魔术方法__construct()和__destruct()的用法是什么。他们总是需要吗?

需要一个很好的简单答案,这有点令人困惑。

3 个答案:

答案 0 :(得分:2)

不需要它们。 在初始化时调用构造,即在创建/构造对象时。 在清理时会调用Destruct。

示例:

class Foo
{
    function __construct()
    {
        echo "start";
    }

    function __destruct()
    {
        echo "end";
    }
}

$foo = new Foo(); // outputs start
echo ' : ';
unset( $foo );    // outputs end
echo ' ! ';

以上代码段输出start : end !。如果我们不使用unset,在清理时仍会在脚本末尾调用析构函数,那么输出将是:start : ! end

链接

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

答案 1 :(得分:2)

关于__construct(),它使您可以使用新创建的对象来覆盖父类的__construct()方法。

所以它可能不是必需的(也不是),但是如果一个类扩展了另一个类,可能需要添加一个构造函数来避免自动调用父构造函数。

答案 2 :(得分:0)

我对构造最常见的用法是将类变量初始化为默认值。虽然我还没有必要使用destruct。