Запуск __call () в PHP, даже когда существует метод

В документации по PHP говорится о __call() :

__call () запускается при вызове недоступных методов в контексте объекта.

Есть ли способ, которым я могу вызвать __call() даже когда метод существует, до __call() фактического метода? Или, есть ли какой-нибудь другой крюк, который я могу реализовать, или другой способ, который обеспечил бы эту функциональность?

Если это имеет значение, это для static function (и я бы предпочел использовать __callStatic ).

Как насчет того, чтобы защитить все ваши другие методы и проксировать их через __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(); 

Почему бы просто не защитить все ваши методы и назвать их с помощью __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'