如何在没有相同父级的类之间共享代码?

时间:2012-10-31 14:17:20

标签: php php-5.2

我有外部库的A,B类,我的类A2扩展A,B2扩展B.类A2和B2的代码完全相同。我可以分享吗?代码做了一些工作并调用父函数:

class A2 extends A
{
  function func1($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func1($var1, $var2,...);
  }
  function func2($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func2($var1, $var2,...);
  }
  ...
  ...
  ...
}

class B2 extends B
{
  function func1($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func1($var1, $var2,...);
  }
  function func2($var1, $var2,...)
  {
     ...
     ... Do some job
     ...
     return parent::func2($var1, $var2,...);
  }
  ...
  ...
  ...
}

我遇到了PHP 5.2.x和allow_url_include=off(由于客户限制),

2 个答案:

答案 0 :(得分:0)

如果A2和B2 完全相同,那么将其转换为自己的类,而不是让它扩展现有的类。然后,您可以将该类的对象传递给实际需要使用它的任何其他对象。

另请参阅:Strategy Pattern

答案 1 :(得分:0)

从另一个方向看这个似乎是个好主意。 A类和B类具有不同的代码,但A2和B2具有相同的代码,因此我们将该代码块称为C.您需要的是A2和B2类,其中A2具有A和C的功能,以及B2具有B和C的功能。你能使C成为A和B的超类吗?然后你直接使用这两个类,而不重复代码。