我总是在不同的类之间手动传递数据。例如,我有一个类产生的一些数据:
$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);
它被认为是更好的选择吗?还是有更好的东西?
答案 0 :(得分:0)
请记住将代码设为SOLID。 (http://en.wikipedia.org/wiki/SOLID_(object-oriented_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;
}
}
?>
或者当你的Class2 cant不存在Class1时,在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;
}
}
?>