类方法命名问题 - 与扩展类冲突?

时间:2013-02-25 07:12:45

标签: php class

这不是一个问题,而是更多的最佳实践问题 - 我知道这些问题受到意见的影响,但我确信必须有针对此特定问题的标准惯例。

假设我有两个课程AccountAssociate

Account包含几个对Associate有用的方法,因此我自然会将Account类扩展为Associate

然而,当我有两个同名的方法,例如,当然会出现问题,例如create()

到目前为止,为了抵消这种而不是扩展父类,我一直在将它实例化为子类__construct()方法中的变量,然后通过它调用方法,例如$this->Account->create();

还有其他方式,例如使用扩展类方法的规范,同时在子类中仍然使用相同名称的方法?

任何答案都将非常感谢!

2 个答案:

答案 0 :(得分:1)

  

帐户包含几个对Associate有用的方法,因此我自然会将Account类扩展为Associate。

不,这不是很自然,你滥用继承。或者你会说一个关联帐户?如果拥有帐户,请使用合成。如果没有,但是帐户类具有对关联类有用的方法,它们可能根本不应该在帐户类中。将它们提取到一个或多个其他类,可由Account和Associate使用。

答案 1 :(得分:0)

如果您在子类方法中,将使用$this调用子类方法。如果你想要父方法,你可以从子方法中调用parent::create();

但是,如果您绝对需要扩展Account类,这听起来是不必要的。如果“Account”类具有公共方法,那么您不需要扩展它,您可以在实例化类之后调用它们:

$account = new Account();
$account->create();

或者,如果它是公共静态方法:

$creation = Account::create();