Добрый день! Есть базовый класс с некоторым набором методов. От него наследуется несколько других классов. Хочется сделать так, чтобы в дочерних классах можно было удалять некоторые родительские методы. Как это лучше реализовать? Пример: PHP: class Base { public function Test1() { //some code } public function Test2() { //some code } public function Test3() { //some code } } class Client1 extends Base { } class Client2 extends Base { } $client1 = new Client1(); print_r(get_class_methods($client1)); //Array ( [0] => Test1 [1] => Test2 ) $client2 = new Client1(); print_r(get_class_methods($client1)); //Array ( [0] => Test2 [1] => Test3 ) Сейчас лишние методы переопределены в дочерних классах пустыми функциями. Но, во-первых, их названия все равно есть в get_class_methods, а, во-вторых, таких пустых методов иногда требуется очень много. Можно ли решить задачу более изящно?
В смысле лишние? Может чет не то делаешь? В моем понимании в родительском описываются общее для подклассов, если не хочешь что бы видны были пометь как private. В подклассах функционал дополняется если надо переопределяется действие.
Если ты убираешь из производных классов какую-то функциональность, особенно, если таких методов много, то возможно тебе не стоит использовать именно наследование. Может стоит посмотреть в сторону, к примеру, трейтов. Поскольку идея наследования - это отношение "is a", а -ля Dog is an Animal, circle is a figure, ArticleController is a controller. Поэтому функциональность должна при наследовании только расширяться.