假设我有,
interface Foo {
}
class FooClass implements Foo {
}
有没有办法可以在FooClass
之外的界面添加一些逻辑,以便我可以这样做:
$foo = new FooClass();
$foo->Bar();
其中Bar
是适用于所有Foo
的方法吗?我要求的是与extension methods in C#类似的东西,但在我的情况下,我想扩展接口。
我知道我可以添加一个自定义静态函数Bar
,它接受Foo
作为参数,但我想知道PHP中是否有任何东西给我$foo->Bar()
糖
编辑:我认为我不够清楚。我从外部库中有几个类似的接口(以及许多实现它们的类)。将它们更改为抽象类不是我的选择。
答案 0 :(得分:2)
我认为使用PHP最接近的就是所谓的traits。
<?php
interface Foo {
}
trait myTraits {
function bar() { echo "BarMethod"; }
}
class FooClass implements Foo {
use myTraits;
}
$foo = new FooClass();
$foo->Bar();
?>
这将输出&#34; BarMethod&#34;。