Инициирование __ вызов () в PHP, даже когда метод существует

Мой список включает: Пася Код, Глубоко Жареные Байты, Подкаст Polymorohic, Pixel8.Net Скалы, Hanselminutes, подкаст Powerscripting. Полный список: http://rtipton.wordpress.com/podcasts/

17
задан Axel 26 October 2017 в 01:00
поделиться

2 ответа

Как насчет того, чтобы просто защитить все ваши другие методы и проксировать их через __callStatic?

namespace test\foo;

class A
{
    public static function __callStatic($method, $args)
    {
        echo __METHOD__ . "\n";

        return call_user_func_array(__CLASS__ . '::' . $method, $args);
    }

    protected static function foo()
    {
        echo __METHOD__ . "\n";
    }
}

A::foo();
11
ответ дан 30 November 2019 в 12:20
поделиться

Почему бы просто не сделать все ваши методы защищенными и не вызывать их с помощью __call ():

 class bar{
    public function __call($method, $args){
        echo "calling $method";
        //do other stuff
        //possibly do method_exists check
        return call_user_func_array(array($this, $method), $args);
    }
    protected function foo($arg){
       return $arg;
    }
 }

$bar = new bar;
$bar->foo("baz"); //echo's 'calling foo' and returns 'baz'
21
ответ дан 30 November 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: