Перехват вызова метода

303
28 января 2019, 20:00

Есть интерфейс

interface TestInterface {
    public function test();
    public function test2();
}

Есть несколько родительских классов

class ParentClass1 implements TestInterface {
    public $child = false;
    public function test() {
        if (!$this->child) {
            return 'fail';
        }
        echo 'test1';
    }
    public function test2() {
        echo 'test2';
    }
}
class ParentClass2 implements TestInterface {
    public $child = false;
    public function test() {
        if (!$this->child) {
            return 'fail';
        }
        echo 'test2';
    }
    public function test2() {
        echo 'test2';
    }
}

И есть рандомные наследуемые классы

class ChildClass1 extends ParentClass1 {
    public $child = 1;
}
class ChildClass2 extends ParentClass2 {
    public $child = 2;
}

Сам по себе родительский класс может быть создан (не абстрактный), и может быть вызван метод test2. Чтоб разрешить выполнение метода test только для дочерних элементов, приходится в каждый родительский класс вставлять этот костыль

if (!$this->child) {
    return 'fail';
}

В приложении естественно, подобных классов гораздо больше чем 2, приходится повторять один и тот же костыль в многих классах. Была мысль, сделать общую абстракцию для всех родительских классов, реализовать в нёй метод __call, сделать методы protected, и отлавливать вызовы методов. Но php ругается (т.к. интерфейс, а значит только public). Есть какие либо идеи, как отлавливать вызовы методов другим способом ?

READ ALSO
Как загрузить отчет по URL на сервер?

Как загрузить отчет по URL на сервер?

По такому URL хочу загрузить на сервер отчетЕсли его дать внутри a href то он грузит этот отчет

236
Как изменить цвет ячейки таблицы на срок 24 часа, в которую были внесены изменения

Как изменить цвет ячейки таблицы на срок 24 часа, в которую были внесены изменения

Есть таблица "Проекты"Каждый проект, соответственно, имеет свой id, по которому можно задать дополнительный класс каждой строке в таблице...

252
Php Простое регулярное выражение на поиск e-mail

Php Простое регулярное выражение на поиск e-mail

Помогите составить регвыражение

259