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