Php 通过构造函数或方法传递对象

Php 通过构造函数或方法传递对象,php,Php,因此,我有一个对象,它可以保存一个包含一些数据的字符串,我必须验证这个对象或字符串,但我想不出为什么我要将它传递给方法而不是构造函数,在某些情况下,我应该通过构造函数而不是方法传递它,或者通过方法而不是构造函数传递它吗 这是PHP代码。如果需要将对象保存在对象中供一个或多个方法稍后使用,请将其传递到构造函数中。然后,如果将其或其副本分配给成员变量,则它将成为对象“状态”的一部分 如果要传递的对象是暂时的,并且您只需要在方法的生存期内使用它,那么您可以将它作为参数传递给方法。构造函数也是临时的,方

因此,我有一个对象,它可以保存一个包含一些数据的字符串,我必须验证这个对象或字符串,但我想不出为什么我要将它传递给方法而不是构造函数,在某些情况下,我应该通过构造函数而不是方法传递它,或者通过方法而不是构造函数传递它吗


这是PHP代码。

如果需要将对象保存在对象中供一个或多个方法稍后使用,请将其传递到构造函数中。然后,如果将其或其副本分配给成员变量,则它将成为对象“状态”的一部分


如果要传递的对象是暂时的,并且您只需要在方法的生存期内使用它,那么您可以将它作为参数传递给方法。

构造函数也是临时的,方法的不同之处在于它的用法。在创建某个类的对象时,我们需要做一些事情,所以对于这些事情,我们将对象/设置参数传递给构造函数,当我们需要在该类的上下文中处理一些数据时,我们使用方法。
我想这就是你想问的“方法和构造函数的不同b/w用法”。如果您遇到一些编码问题,请告诉我场景

通过对象构造函数传递arg只有一个名义上的好处,那就是您删除了直接调用setter的额外步骤

$foo = new Foo($dbo);

// Same thing as 
$foo = new Foo();

$foo->setDbo($dbo);
就个人而言,我更喜欢显式地调用setter,而不是将它们传递给构造函数,因为我不想以15个签名参数结束,而且我可以看到调用代码是如何使用该对象的


有时,我确实会使用构造函数来准备相关的对象,但从来不会用它来传递参数。

你能写一些代码吗?我想你说的是PHP。我真的没有任何代码。这只是一个一般性的问题。我真的不清楚这个问题,因为我无法判断javascript问题是否贴错了标签。我明白了,因此,如果通过一个方法将其分配给一个属性以与多个方法一起使用是错误的?如果在构造过程中已将其存储在属性中,则通过一个方法将其传递是多余的。它保留在对象实例中,以便随时通过任何方法进行访问。这是可行的,但它打破了面向对象编程的“封装”部分。实际上,有一个oop概念称为setter注入,它涉及使用构造函数以外的方法设置对象。当您希望避免弄乱构造函数时,它非常有用。所以说它“破坏了封装”并不总是正确的。