在每次調用另一個方法時都會調用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. 每次加載某個頁面時調用一次方法(AngularJS)
- 3. 執行一個PHP方法一次
- 4. PHP的神奇方法問題
- 5. PHP 「神奇」 的方法獲取/設置
- 6. __reversed__神奇的方法
- 7. 調用方法來執行再次
- 8. 如何執行某些類方法每100ms不超過一次?
- 9. 在Backbone中如何在每次執行Ajax調用時觸發一個方法?
- 10. 爲什麼每次我調用它時都會執行兩次該方法?
- 11. 在Java中以神奇的方式調用方法
- 12. 如何每x秒執行一次方法調用?
- 13. 每次選擇標籤時執行一個方法
- 14. 在第一次方法調用時執行所有if-bodies的正確方法
- 15. 如何在執行方法時設置測試方法的調用次數
- 16. 每次調用任何其他方法之前調用方法
- 17. WCF在每個服務方法調用之前執行的一種方法
- 18. 如何使每個類方法在執行之前調用指定的方法?
- 19. 奇怪的行爲與例外(某些方法未被調用執行)
- 20. 每次更新對象時,應使用flask sqlalchemy執行方法
- 21. 每次執行一個方法後暫停一次
- 22. 執行方法調用
- 23. REST方法 - 在執行其他方法之前執行「常用」方法調用
- 24. 方法執行時不調用它?
- 25. 找到的每個文件執行回調時,貓鼬執行find()方法
- 26. 每個方法調用都執行一個對象函數嗎?
- 27. 每次在某個類中使用特定註釋時的運行方法
- 28. 每次調用方法時創建一個新的集合
- 29. 當調用現有方法時執行(魔術)方法
- 30. Python用戶定義神奇方法
這是完美的,謝謝:) – ubugnu 2012-04-13 18:22:06