摘要:可以實現非常好的模塊低耦合。未來如果增加了新的模塊,比如。這種做法顯然是侵入性的。但遠沒有強大,而且還需要不斷加入的遍歷點。如果編程的話,只需要外部注入一個函數,執行時,就會執行指定的代碼。
項目地址:http://pecl.php.net/package/AOP
首先介紹下AOP編程,也叫做面向切面編程,是一種非侵入式編程的方法,采用外部注入的方式來取代嵌入代碼。可以實現非常好的模塊低耦合。
假設你的框架有一個 Frameworkd::init方法,功能是初始化框架資源?,F在有db,template的初始化也需要在這個階段執行,傳統的做法就是只能修改 Framework::init在里面加入 db,template的方法調用。未來如果增加了新的模塊,比如cache。那就需要修改Frameworkd::init的代碼。這種做法顯然是侵入性的。
當然也可以用hook list的方式來實現。在需要外部注入的地方加入一個hook list,遍歷執行外部注入的接口。但遠沒有AOP強大,而且還需要不斷加入hook list的遍歷點。
如果AOP編程的話,只需要外部注入一個函數,執行 Framework::init時,就會執行指定的代碼。
doAdmin*()", "adviceForDoAdmin"); aop_add_after("MyServices->doAdmin*()", "adviceForDoAdmin2"); $o = new MyServices; $o->doAdminStuff1(); $o->doAdminStuff2();
執行結果:
Calling doAdminStuff1 AOP[2] Run AOP[1] Run Calling doAdminStuff2 AOP[2] Run AOP[1] Run
轉自http://rango.swoole.com/archi...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29298.html
摘要:今天我想聊聊的另一個很棒的特性就是它的可擴展性。的擴展機制在的官網上,描述自己是一個高性能的框架。接下來的章節中我們會慢慢揭開擴展機制的神秘面紗。擴展擴展點的實現類。的定義在配置文件中可以看到文件中定義了個的擴展實現。 摘要: 在Dubbo的官網上,Dubbo描述自己是一個高性能的RPC框架。今天我想聊聊Dubbo的另一個很棒的特性, 就是它的可擴展性。 Dubbo的擴展機制 在Dub...
摘要:運行來安裝指定的擴展。這更便于用戶辨別是否是的擴展。當用戶運行安裝一個擴展時,文件會被自動更新使之包含新擴展的信息。上述代碼表明該擴展依賴于包。例如,上述的條目聲明將對應于別名。為達到這個目的,你應當在公開發布前做測試。 簡述 擴展是專門設計的在 Yii 應用中隨時可拿來使用的, 并可重發布的軟件包。 基礎 例如, yiisoft/yii2-debug 擴展在你的應用的每個頁面底部添加...
摘要:容量和可擴展性并不依賴于性能。容量是車道乘以最大安全時速。至此,關于擴展性的概念描述告一段落。但現實是誒,小九啊,咱們系統提升下性能要多久啊三天應該差不多了吧,最多不能超過一周,上次提升性能,小六一天就搞定了的。 我們應該接觸過或者聽說過數據庫的性能瓶頸問題。對于一個單機應用而言,提升數據庫性能的最快路徑就是氪金 - 買更高性能的數據庫服務器,只要錢到位,性能不是問題。 但是當系統性能...
摘要:容量和可擴展性并不依賴于性能。容量是車道乘以最大安全時速。至此,關于擴展性的概念描述告一段落。但現實是誒,小九啊,咱們系統提升下性能要多久啊三天應該差不多了吧,最多不能超過一周,上次提升性能,小六一天就搞定了的。 我們應該接觸過或者聽說過數據庫的性能瓶頸問題。對于一個單機應用而言,提升數據庫性能的最快路徑就是氪金 - 買更高性能的數據庫服務器,只要錢到位,性能不是問題。 但是當系統性能...
閱讀 2601·2021-11-15 11:38
閱讀 2618·2021-11-04 16:13
閱讀 17981·2021-09-22 15:07
閱讀 1014·2019-08-30 15:55
閱讀 3261·2019-08-30 14:15
閱讀 1663·2019-08-29 13:59
閱讀 3207·2019-08-28 18:28
閱讀 1575·2019-08-23 18:29