set_state php__ metodos method magicos magicas hacer funciones ejemplos como callstatic _set __call php magic-methods

metodos - php__ set_state



Activación de__call() en PHP incluso cuando existe un método (2)

La documentación de PHP dice lo siguiente sobre el método mágico __call() :

__call () se activa cuando se invoca métodos inaccesibles en un contexto de objeto.

¿Hay alguna manera de que se pueda __call() incluso cuando existe un método, antes de que se llame al método real? O, ¿hay algún otro gancho que pueda implementar u otra forma que proporcione esta funcionalidad?

Si importa, esto es para una static function (y preferiría usar __callStatic ).


¿Por qué no hacer que todos sus métodos estén protegidos y llamarlos usando __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''


¿Qué tal si solo hace que todos sus otros métodos estén protegidos, y haga proxy a través de __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();