[英]Passing an object between different classes?
我总是在不同的类之间手动传递数据。 例如,我有一个类生成的一些数据:
$someData = $Object->someMethod();
$moreData = $Object2->anotherMethod($someData);
但这对我来说很笨拙,并且会导致凌乱的代码变得复杂。 尤其是在围绕多个类传递多种不同类型的数据的情况下。
因此,我没有这样做,而是创建了一个DataContainer类,该类对与流程相关的每个变量进行分组,然后将这个对象传递给不同的类。 当它通过处理管道时,它将收集越来越多的数据,直到几乎每个字段都设置为某个值为止。
因此,例如,我有一条处理数据的管道,该数据被4种不同的类修改-我将通过引用传递数据,而不是通过值传递数据:
$myObject = $class1->method1(); // this class returns the DataContainer object
$class2->method2($myObject);
$class3->method3($myObject);
$class4->method4($myObject);
是否认为是更好的选择? 还是有更好的东西?
请记住,使您的代码成为固体。 ( http://en.wikipedia.org/wiki/SOLID_(object-directional_design) )在这种情况下,您可以在class2的构造函数中创建引用。
例如:
<?php
class Class1
{
private $class2;
public __construct(Class2 $class2)
{
$this->class2 = $class2;
}
public function CallMethodOfClass2()
{
$value = $this->class2->GetMethod();
$propertyValue = $this->class2->public_property;
}
}
?>
或者,当没有Class1的Class2无法存在时,在Class1的构造函数中创建一个Class2的新实例,如下所示:
<?php
class Class1
{
private $class2;
public __construct()
{
$this->class2 = new Class2();
}
public function CallMethodOfClass2()
{
$value = $this->class2->GetMethod();
$propertyValue = $this->class2->public_property;
}
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.