我有一些使用彼此功能的类。以下面的例子为例:
namespace app/myclass;
class FirstClass
{
public function getSecondClass()
{
return SecondClass::instance();
}
}
namespace app/myclass;
class SecondClass
{
public function getFirstClass()
{
return FirstClass::instance();
}
}
现在我在另一个名称空间中有子类,如下所示:
namespace front\myclass;
class FirstClass extends \app\myclass
{
public function someMethod()
{}
}
namespace front\myclass;
class SecondClass extends \app\myclass
{
public function someMethod()
{}
}
当我使用子类中的instance()
方法时,它将从父类返回实例。是否可以从相同的当前命名空间返回它?
示例:
$myclass = new \front\myclass\FirstClass;
$instance = $myclass->getSecondClass(); \\ will return \app\myclass\SecondClass
我希望它返回front\myclass\SecondClass
而不必覆盖该方法,因为我有许多应该使用相同规则的文件。
答案 0 :(得分:0)
你必须覆盖FirstClass
中的方法,因为父方法正在调用一个明确指定SecondClass
的静态方法,另一个解决方案可能是使用特征,但我不推荐它们,恕我直言,他们使工作人员复杂化
修改强>
实际上,经过另一次考虑之后,我觉得你的代码可能需要重构,我闻到了一些不好的东西,我没有真正看到它(因为我缺乏相关信息,我看不太多它可以闻到高度耦合的代码和/或OOP滥用,可能是一个令人羡慕的功能。