Предположим, у меня есть,
interface Foo {
}
class FooClass implements Foo {
}
Есть ли способ добавить немного логики в интерфейс за пределами FooClass
так что я могу сделать это:
$foo = new FooClass();
$foo->Bar();
где Bar
метод применим ко всем Foo
s? Я прошу что-то похожее на методы расширения в C # но в моем случае я хочу расширить только интерфейсы.
Я знаю, что могу добавить пользовательскую статическую функцию Bar
который принимает Foo
в качестве параметра, но я хочу знать, есть ли в PHP что-нибудь, что дает мне $foo->Bar()
сахар.
Редактировать: Я думаю, что я не был достаточно ясен. У меня есть пара похожих интерфейсов (и многие классы, реализующие их) из внешней библиотеки. Изменение их на абстрактные классы не вариант для меня.
Я думаю, что ближе всего вы можете получить с помощью PHP так называемые черты.
<?php
interface Foo {
}
trait myTraits {
function bar() { echo "BarMethod"; }
}
class FooClass implements Foo {
use myTraits;
}
$foo = new FooClass();
$foo->Bar();
?>
Это выведет «BarMethod».
Других решений пока нет …