魔术方法 __construct() 和 __destruct() 的用途是什么。他们总是需要吗?
需要一个很好的简单答案,这有点令人困惑。
它们不是必需的。Construct 在初始化时调用,即在创建/构造对象时调用。清理时调用 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
关联
About __construct()
,它使您可以对新创建的对象做一些事情并覆盖__construct()
父类的方法。
所以它可能不是必需的(也不是),但是如果一个类扩展了另一个类,则可能需要添加一个构造函数来避免自动调用父构造函数。
我对构造的最常见用途是将类变量初始化为默认值。不过,我还没有需要使用 destruct 。