【发布时间】:2014-09-16 09:46:29
【问题描述】:
我在设计项目代码时遇到问题。
例如:
我有两个模型类:AClass 和 BClass 其中 extends 来自 CClass 类。
对于每个此类,我有两个服务层:AService 和 BService,其中我有方法:
create(AClass $object)和create(BClass $object)对应。
所以我想要什么。我想创建Abstract Service CService,其中我有抽象类create(CClass class)。而我的AService 和BService 必须extends fromCService。
但是在PHP 我不能这样做,因为它因兼容异常而失败。
所以也许有一些想法可以解决这个问题?
更新: 上面的例子可能不是很好,所以我给你看一个真实的例子:
abstract class Contract
{
protected $id;
protected $owner
}
class FundTraderContract extends Contract
{
private $fundContract;
}
class InvestorTraderContract extends Contract
{
private $investmentContract;
}
abstract class ContractService
{
abstract function create(Contract $contract){}
}
class FundTraderContractService extends ContractService
{
public function create(FundTraderContract $contract)
{
//some logic
}
}
class InvestorTraderContractService extends ContractService
{
public function create(InvestorTraderContract $contract)
{
//some logic
}
}
我认为现在的例子更容易看到。所以在这种情况下存在兼容问题。
【问题讨论】:
-
我欢迎我们的新方法过载。 ;)
-
仅供参考,你不是第一个问这个的人,例如见stackoverflow.com/q/19429089/476。让两个类层次结构基本上并行并不真正起作用,不仅仅是在 PHP 中。我对这个设计解决方案很感兴趣。
标签: php abstract-class parent-child overloading