6

在我试图了解更多关于 PHP 中的 OOP 的过程中。我已经多次遇到构造函数,根本无法再忽略它。在我的理解中,构造函数在我创建对象的那一刻被调用,这是正确的吗?

但是,如果我可以使用“普通”函数或方法作为它们的调用,我为什么需要创建这个构造函数呢?

干杯,基思

4

5 回答 5

28

构造函数允许您确保在尝试使用对象之前将其置于特定状态。例如,如果您的对象具有使用它所需的某些属性,您可以在构造函数中初始化它们。此外,构造函数允许一种有效的方式来初始化对象。

于 2008-12-31T18:56:00.503 回答
10

是的,在创建对象时调用构造函数。

构造函数有用的一个小例子是这个

class Bar
{
    // The variable we will be using within our class
    var $val;

    // This function is called when someone does $foo = new Bar();
    // But this constructor has also an $var within its definition,
    // So you have to do $foo = new Bar("some data")
    function __construct($var)
    {
        // Assign's the $var from the constructor to the $val variable 
        // we defined above
        $this->val = $var
    }
}

$foo = new Bar("baz");

echo $foo->val // baz

// You can also do this to see everything defined within the class
print_r($foo);

更新:一个问题还问为什么应该使用它,一个真实的例子是一个数据库类,你用用户名和密码以及要连接的表调用对象,构造函数将连接到该对象。然后,您就拥有了在该数据库中完成所有工作的功能。

于 2008-12-31T18:47:59.367 回答
6

构造函数的思想是为对象准备最初的一堆数据,这样它就可以按预期运行。

Just call a method不是交易,因为您可能会忘记这样做,并且不能在语法中将其指定为“工作前必需”-因此您将获得“损坏”对象。

于 2010-12-28T02:58:20.507 回答
2

构造函数适用于各种各样的事情。他们在你的类中初始化变量。假设您正在创建一个 BankAccount 类。$b = 新银行账户(60);有一个构造函数,它给银行账户一个初始值。他们基本上在类中设置变量,或者他们也可以初始化其他类(继承)。

于 2010-12-28T02:58:41.927 回答
2

构造函数用于在创建对象时进行初始化。

您不希望在新创建的对象上调用任意方法,因为这违背了封装的想法,并且需要使用该对象的代码对其内部工作有固有的了解(并且需要更多的努力)。

于 2010-12-28T02:58:59.053 回答