繁体   English   中英

在不同的类之间传递对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM