【发布时间】:2013-08-09 15:23:26
【问题描述】:
我有这个基类:
class Base
{
public $extA;
public $extB;
function __construct()
{
}
public function Init()
{
$this->extA = new ExtA();
$this->extB = new ExtB( $this );
}
public function Test()
{
return 'Base Test Here!';
}
}
扩展基类的ExtA类
class ExtA extends Base
{
public function Test()
{
return 'ExtA Test Here!';
}
}
ExtB 类也扩展了基类
class ExtB extends Base
{
private $base;
public function __construct( $base )
{
$this->base = $base;
}
public function Test()
{
return 'ExtB calling ExtA->Test()::' . $this->base->extA->Test();
}
}
$base = new Base();
$base->Init();
var_dump( $base->Test() );
var_dump( $base->extA->Test() );
var_dump( $base->extB->Test() );
我尝试从 ExtB 调用 ExtA 类 Test() 函数, ExtA 和 ExtB 都在扩展基类。 我的问题是:这样可以吗,还是有更好、更快的解决方案?
extends 也是必要的吗? 或者像这样就足够了
class ExtA
{
...
}
class ExtB
{
...
}
谢谢!
【问题讨论】:
-
这里有一些非常奇怪的依赖关系。你想继承吗?
-
理论上这在某种程度上是有效的……如果它运行良好,这取决于你想要的行为。 B 类的扩展是必要的,A 类的扩展不是。
-
@Frits van Campen 对不起,我不明白,我应该如何继承?
-
@user2668398 通过使用
extends和implements。查看 PHP 的 OOP 教程。 -
实现一个没有问题的机制是完全没有意义的。展示你的真正的问题,我们可以为你指出一个解决方案[让它要么是继承,要么是接口......]。尽管如此,你的方法至少是好奇。