所以我有一个可以保存包含一些数据的字符串的对象,我必须验证对象或字符串,但我不知道为什么我会将它传递给方法而不是构造函数,是否存在某些情况下我应该通过它构造函数而不是方法还是通过方法而不是构造函数?
这是 PHP 代码。
所以我有一个可以保存包含一些数据的字符串的对象,我必须验证对象或字符串,但我不知道为什么我会将它传递给方法而不是构造函数,是否存在某些情况下我应该通过它构造函数而不是方法还是通过方法而不是构造函数?
这是 PHP 代码。
构造函数也是方法的区别只是在它的用法上。在创建某个类的对象时我们需要做一些事情,因此对于这些事情,我们将对象/设置参数传递给构造函数,当我们需要在该类的上下文中处理一些数据时,我们使用方法。我认为这就是你想问的“方法和构造函数的黑白使用差异”。如果您遇到一些编码问题,请告诉我场景。
如果您需要将对象保存在对象中以供一个或多个方法使用,则将其传递给构造函数。然后,如果您将它或它的副本分配给成员变量,它就会成为对象“状态”的一部分。
如果要传递的对象是瞬态的,并且您只在方法的生命周期内需要它,那么您可以将它作为参数传递给方法。
通过对象构造函数传递 arg 只有一个名义上的好处,那就是您正在删除直接调用 setter(s) 的额外步骤。
$foo = new Foo($dbo);
// Same thing as
$foo = new Foo();
$foo->setDbo($dbo);
就个人而言,我更喜欢显式调用 setter 而不是将它们传递给构造函数,因为我不想最终得到 15 个签名参数,而且我可以看到调用代码是如何使用对象的。
有时,我确实使用构造函数来准备相关对象,但从不用于传递参数。