Хорошо или плохо для абстрактного класса реализовать интерфейс?
оба примера ниже работают, но какой из них имеет больше смысла для вас ?
Опция 1,
interface A { function foo(); } abstract class B implements A { abstract public function foo(); } class C extends B { public function foo() { echo 'works'; } } $o = new C(); $o->foo();
вариант 2,
interface A { function foo(); } abstract class B implements A { } class C extends B { public function foo() { echo 'works'; } } $o = new C(); $o->foo();
В option2 классB ничего не добавляет к семантике вашего приложения, поэтому он совершенно не нужен. Если вам не нужно реализовывать какие-либо общие (по всем подклассам) функциональности в абстрактном классе, вам лучше получить непосредственно из интерфейса, чтобы сделать вещи не излишне сложными.
В этом случае все это можно было бы легко понять:
interface A { function foo(); } class C implements A { public function foo() { echo 'works'; } }