在每次调用另一个方法时都会调用PHP中的神奇方法吗?只有当方法不存在时,__callStatic()和__call()魔术方法似乎才起作用。PHP:每次调用某个方法时执行的神奇方法
2
A
回答
3
号你问什么叫"advice"或aspect oriented programming。我相信在PHP中有一些实验性扩展允许这样做,但是在生产中您不想使用它。
你可以做什么,是创建一个包装,通过__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();
参见:https://stackoverflow.com/questions/4738282/are-there-any-working-aspect-oriented-php-libraries
0
为什么你需要这个?你可以创建一个方法,并在你开始的每种方法中调用它。
编辑: 你所搜索的是一样的东西在PHP面向方面编程。 谷歌快速搜索发现这里: http://code.google.com/p/apdt/
也许它有帮助。
0
相关问题
- 1. PHP __神奇的方法不被调用
- 2. 执行一个PHP方法一次
- 3. PHP的神奇方法问题
- 4. __reversed__神奇的方法
- 5. 调用方法来执行再次
- 6. 如何执行某些类方法每100ms不超过一次?
- 7. 为什么每次我调用它时都会执行两次该方法?
- 8. 在Java中以神奇的方式调用方法
- 9. 每次选择标签时执行一个方法
- 10. 如何在执行方法时设置测试方法的调用次数
- 11. 每次调用任何其他方法之前调用方法
- 12. WCF在每个服务方法调用之前执行的一种方法
- 13. 如何使每个类方法在执行之前调用指定的方法?
- 14. 每次执行一个方法后暂停一次
- 15. REST方法 - 在执行其他方法之前执行“常用”方法调用
- 16. 找到的每个文件执行回调时,猫鼬执行find()方法
- 17. 每次在某个类中使用特定注释时的运行方法
- 18. 每次调用方法时创建一个新的集合
- 19. 当调用现有方法时执行(魔术)方法
- 20. Python用户定义神奇方法
- 21. 每x分钟调用一次方法
- 22. 当main方法调用方法时,方法是否执行从上到下?
- 23. 在每个web服务调用之前调用某种方法
- 24. 每次将项目添加到集合时执行方法
- 25. 方法调用崩溃“无法执行活动的方法”
- 26. 递归方法 - 在每次调用时增加一个值
- 27. 每次调用任何方法时调用宏 - 目标C
- 28. 从脚本中调用神奇的方法
- 29. 如何在执行一些其他有重载的方法之前/之后每次执行一个方法?
- 30. 一种方法调用方法一次
这是完美的,谢谢:) – ubugnu 2012-04-13 18:22:06