gpt4 book ai didi

php - 我可以在 child 的命名空间中执行父方法吗?

转载 作者:行者123 更新时间:2023-12-04 17:03:56 24 4
gpt4 key购买 nike

我在其命名空间 Bar 中有一个类 Foo:

namespace Bar;
class Foo
{
public function main()
{
// This will be Bar\Biz
return new Biz();
}
}

main() 方法返回类 Bar\Biz

除了返回 MyBar\Biz 而不是 Bar\Biz 之外,我想扩展这个类而不做任何更改。我可以这样做:
namespace MyBar;
class myFoo extends Bar\Foo
{
public function main()
{
// This will be MyBar\Biz
return new Biz();
}
}

方法 main() 与父方法相同。它恰好运行在不同的命名空间中。这有效。

但是, main() 是一个漫长而复杂的方法,我不想复制它的所有代码,并且必须使我的副本与我覆盖的源类保持同步。有没有办法在不必复制代码的情况下做到这一点?

我在 PHP5.4 上,但如果在 5.4 中无法完成,是否有针对更高版本 PHP 的解决方案我会感兴趣(我知道 5.6 中有某种“导入”可能是解决方案?)

最佳答案

将结果提取到它自己的函数中并覆盖它。

namespace Bar;
class Foo
{
public function main()
{
// lots of logic
return create();
}

protected function create()
{
return new Biz();
}
}


namespace MyBar;
class myFoo extends Bar\Biz
{
protected function create()
{
return new Biz();
}
}

关于php - 我可以在 child 的命名空间中执行父方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com