Вызывать метод каждый раз, когда другие методы вызываются?

Я использую __call() чтобы сделать это, но это нарушает видимость метода, я должен объявить методы, которые будут иметь автоматические вызовы с protected или же private видимость. Например:

<?php

class test {

    public function __call($method,$arguments)
    {
        if(method_exists($this, $method)) {

            $this->qux();

            return call_user_func_array([$this,$method], $arguments);
        }
    }   

    protected function foo (){
        echo 'Foo';
    }

    protected function bar(){
        echo 'Bar';
    }

    public function qux(){
        echo 'Qux';
    }
}

$o = new test();

$o->foo(); // outputs 'QuxFoo'

$o->bar(); // outputs 'QuxBar'

Есть ли другой способ сделать это, не нарушая видимость метода? Например, мне нужно foo() а также bar() быть public,

0 ответов

Другие вопросы по тегам