我试图在PHP中学习更多有关OOP的知识。我几次遇到构造函数,根本不能忽略它。在我的理解中,构造函数在我创建对象的那一刻被调用,这是正确的吗?
但是,如果我可以使用“普通”函数或方法作为被调用者,为什么我需要创建这个构造函数呢?
欢呼声, 基思
答案 0 :(得分:28)
构造函数允许您在尝试使用对象之前确保将对象置于特定状态。例如,如果您的对象具有使用它所需的某些属性,则可以在构造函数中初始化它们。此外,构造函数允许以有效的方式初始化对象。
答案 1 :(得分: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);
更新: 一个问题也问为什么应该使用它,一个现实生活中的例子是一个数据库类,你可以使用用户名和密码以及连接到的表来调用对象,构造函数将连接到该对象。然后你就可以在该数据库中完成所有工作。
答案 2 :(得分:6)
构造函数的想法是为对象准备初始数据束,因此它可以表现得很好。
Just call a method
不是一个交易,因为你可以忘记这样做,并且这不能在语法中指定为“工作前需要” - 所以你将得到“破碎”的对象。
答案 3 :(得分:2)
构造函数适用于各种各样的事情。它们在您的类中初始化变量。假设您正在创建BankAccount类。 $ b = new BankAccount(60);有一个构造函数,为银行帐户提供初始值。他们基本上在类中设置变量,或者他们也可以初始化其他类(继承)。
答案 4 :(得分:2)
构造函数用于在创建对象时完成初始化。
您不希望在新创建的对象上调用任意方法,因为这违背了封装的想法,并且需要使用此对象的代码具有其内部工作的固有知识(并且需要更多努力)。