【发布时间】:2012-10-21 00:50:07
【问题描述】:
我有外部库的 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(因为客户限制),
【问题讨论】:
-
你能改变 A 和 B 让它们都扩展同一个类,然后把你的公共代码放在那里吗?
-
你不能在这里使用 Strategy 吗?也就是说,在 A2 和 B2 都将使用(通过聚合或通过 DI)的其他类中定义此重叠代码?
-
问题:除了方便调用它们的方法之外,还有什么理由让 A2 和 B2 分别扩展 A 和 B?例如,您是否要将 A1 视为 A?
-
PHP 5.4 和 Traits... 必须热爱传统工作。让你流汗。