熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP系列學習之AOP[2]

2013-11-15 12:47:33  來源: PHP編程 

  AOP 通知類型

  通知代碼我們可以用很多中方式表現我之前提到這些通知代碼依賴你使用的框架但是有些你需要熟悉的類型請看下面

  前通知返回後通知拋出後通知周邊通知

  前通知

  在你的代碼中一些特殊點之前使用通知正常是調用一個方法

  迄今為止為了簡化概念和為了讓你更快的理解你的代碼我經常把通知寫到方法裡但是在真實的環境裡通知經常是不寫在方法裡的應該有一個獨立的控制器每個方法都在這個控制器裡而且每個方法都包裹著AOP的功能這個全局的控制器運行在整個系統裡而且對我們是不可見的

  <?php

  class PathController

  {

  function controlPaths($className $funcName) {

  Authentication::checkAuthentication()

  $classObj = new $className()

  $classObj>$funcName()

  }

  }

  在這裡假設有這麼一個類主要是用於給你展現這個類實際上發生了什麼事情假設那個controlPaths方法是應用中全局切入點訪問應用中的每個方法都需要通過這個方法訪問上面的方法中在執行每個方法之前我們調用了通知checkAuthentication()這就是前通知

  返回後通知

  這個通知在指定功能執行完後只執行一次並且返回那個訪問點考慮下面的代碼

  <?php

  class PathController

  {

  function controlPaths($className $funcName) {

  $classObj = new $className()

  $classObj>$funcName()

  Database::closeConnection()

  }

  }

  注意這裡當方法完成之後我們清理了數據庫資源在返回通知之後我們調用這個通知

  拋出後通知

  如果在執行進程期間函數拋出異常那麼在拋出完異常之後應用通知這裡是拋出完異常之後通知就變成錯誤提示

  <?php

  class PathController

  {

  function controlPaths($className $funcName) {

  try {

  $classObj = new $className()

  $classObj>$funcName()

  }

  catch (Exception $e) {

  Error::reportError()

  }

  }

  }

  周邊通知

  第四種通知是周邊通知他是前通知和返回後通知的合並體

  <?php

  class PathController

  {

  function controlPaths($className $funcName) {

  Logger::startLog()

  $classObj = new $className()

  $classObj>$funcName()

  Logger::endLog()

  }

  }

[]  []  


From:http://tw.wingwit.com/Article/program/PHP/201311/21641.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.