Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:每次调用一个方法时执行的神奇方法_Php_Oop_Magic Methods - Fatal编程技术网

PHP:每次调用一个方法时执行的神奇方法

PHP:每次调用一个方法时执行的神奇方法,php,oop,magic-methods,Php,Oop,Magic Methods,PHP中是否有一个神奇的方法,每次调用另一个方法时都会调用它?只有当方法不存在时,\uuu callStatic()和\uu call()魔术方法才有效。为什么需要这个?您可以创建一个方法,并在开始时使用的每个方法中调用它 编辑: 您搜索的内容类似于php中的面向方面编程。 在谷歌上快速搜索发现以下内容: 也许会有帮助。不。你要的是叫或。我相信在PHP中有一些实验性的扩展可以实现这一点,但您不希望在生产中使用这些扩展 您可以做的是创建一个包装器,通过\uu call代理所有调用。例如: cla

PHP中是否有一个神奇的方法,每次调用另一个方法时都会调用它?只有当方法不存在时,\uuu callStatic()和\uu call()魔术方法才有效。

为什么需要这个?您可以创建一个方法,并在开始时使用的每个方法中调用它

编辑: 您搜索的内容类似于php中的面向方面编程。 在谷歌上快速搜索发现以下内容:


也许会有帮助。

不。你要的是叫或。我相信在PHP中有一些实验性的扩展可以实现这一点,但您不希望在生产中使用这些扩展

您可以做的是创建一个包装器,通过
\uu call
代理所有调用。例如:

class Foo {
  function bar() {
    echo "Foo::bar\n";
  }
}
class AdviceWrapper {
  protected $subject;
  function __construct($subject) {
    $this->subject = $subject;
  }
  function __call($name, $args) {
    echo "Before $name\n";
    $result = call_user_func_array(array($this->subject, $name), $args);
    echo "After $name\n";
    return $result;
  }
}
$foo = new AdviceWrapper(new Foo());
$foo->bar();

另请参见:

是否可以在方法前面加一个u来重命名它们?然后,所有呼叫都将通过

编辑帖子的

路由。也许有帮助:)谢谢你,Kufi,看来AOP是我所需要的,但对于我的小项目,我认为troelskn的解决方案就足够了