Php 如何在不具有相同父类的类之间共享代码?

Php 如何在不具有相同父类的类之间共享代码?,php,php-5.2,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,...)

我有外部库的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,...);
  }
  ...
  ...
  ...
}
我一直使用PHP5.2.x和
allow\u url\u include=off
(由于客户限制),

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


另请参见:

从另一个角度来看这可能是一个好主意。类A和B有不同的代码,但A2和B2有相同的代码,所以我们将把这段代码称为C。你需要的是类A2和B2,其中A2有来自A和C的功能,B2有来自B和C的功能。你能让C成为A和B的超类吗?然后直接使用这两个类,而不复制代码。

能否更改A和B,使它们都扩展同一个类,然后将公共代码放在那里?您不能在这里使用策略吗?也就是说,在将要使用的其他类中定义此重叠代码(通过聚合或与DI一起使用)通过A2和B2?问题:除了使调用它们的方法变得容易之外,还有什么理由让A2和B2分别扩展A和B吗?例如,你会把A1当作A吗?PHP5.4和Traits。。。我要热爱传统工作。让你有点出汗。