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


Class method naming issues - conflicts with extended class?

这不是一个问题,而是一个最佳实践问题-我知道这些问题会受到意见的影响,但我相信这个特定问题必须有一个标准的约定。

假设我有两个类,AccountAssociate

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

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

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

是否有其他方法,例如,在子类中仍有同名方法的情况下使用扩展类方法的规范?

如有任何答案,我们将不胜感激!

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

不,这不是自然的,你在滥用继承。或者您会说一个同事就是一个帐户吗?如果有一个帐户,请使用composition。如果不是,但是account类有对关联类有用的方法,那么它们可能根本不应该在account类中。将它们提取到一个或多个其他类中,Account和Associate都可以使用这些类。

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

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

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

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

$creation = Account::create();