《PHP教程:CodeIgniter控制器之業務邏輯實例分析》要點:
本文介紹了PHP教程:CodeIgniter控制器之業務邏輯實例分析,希望對您有用。如果有疑問,可以聯系我們。
PHP學習本文實例分析了CodeIgniter控制器之業務邏輯.分享給大家供大家參考,具體如下:
PHP學習前面分析了公用控制器按模塊分發,方便對特定模塊的控制,而具體的實現類則是放在library中.那放在library中是否合適呢?以及控制器中更多的業務邏輯該放在哪里?
PHP學習先說下對CI中幾個文件夾的理解
PHP學習helpers、libraries: 存放一系列輔助函數、輔助類,用來輔助控制器、業務邏輯實現功能.他們中的辦法應當盡量避免與CI依賴,依賴越緊越難以復用.以郵件發送為例,發送郵件時很多參數是不變的,如編碼、協議、端口等,我們可能會在config下進行配置這些參數,然后library封裝一個郵件發送的類,并在其中獲取CI實例后讀取這些參數.此時就出現了與CI實例的依賴,該類就只能在CI框架中使用,其他系統要用到,就只能重寫了,沒達到復用的目的.如果發送的類只是接收參數,并封裝發送辦法呢?所以說,盡可能的讓helpers、libraries變的簡單,職責變得單一.
PHP學習controllers: 控制器目錄.控制器主要用來接管程序,起到連接的作用.通常情況下,我們會把業務邏輯寫在action中.但隨著業務變得復雜,action代碼將越來越臃腫,難以維護.
PHP學習models: 模型目錄.CI的模型的主要職責就是和數據庫打交道,獲取數據.很多時候也會把業務邏輯放在模型中,但業務邏輯與模型實際上是兩種東西了.模型只是獲取數據,業務邏輯可能是把這些數據根據業務需要進行組合,組合方式可能有很多種,放在模型中會讓模型難以維護且不利于復用.說個碰到的例子,對數據按一定條件做緩存,獲取數據和緩存結果兩個流程寫在同一個辦法中,但同樣的數據需要做另一種形式的緩存時發現,獲取數據的辦法就沒法重用了.
PHP學習third_party:第三方類庫目錄.拿到一個類庫后不要直接使用, 可以在library中進行一次封裝,讓其更適應于系統,其他人使用起來難度也會降低.
PHP學習可以發現,每個文件夾都有自己的職責,每個模塊都有自己的家,都有自己的職能.那業務邏輯該怎么辦?
PHP學習既然這樣, 我們也應該給業務邏輯安個家,建立一個唯一的目錄用來存放業務邏輯,暫且命名為service.控制器主要負責接收參數并調用service,service來調用模型,各層各盡其責.
PHP學習下面看看怎么實現:
PHP學習我們可以重寫MY_Load,增加service辦法,直接通過
PHP學習
class MY_Service
{
public function __construct()
{
log_message('debug', "Service Class Initialized");
}
function __get($key)
{
$CI = & get_instance();
return $CI->$key;
}
}
PHP學習其實主要思路還是需要有一層用來處理業務邏輯,java中都有這一層.隨著對CI的不斷熟悉,發覺這里需要這一層,達到解放控制器和模型的目的.和這種類似的做法還有很多,如果系統中有很多地方需要用到web service 或者說cache之類的,其實也可以依照上面的思路單獨放在一個文件夾中處理,方便管理.
PHP學習更多關于CodeIgniter相關內容感興趣的讀者可查看本站專題:《codeigniter入門教程》和《CI(CodeIgniter)框架進階教程》
PHP學習希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所贊助.
《PHP教程:CodeIgniter控制器之業務邏輯實例分析》是否對您有啟發,歡迎查看更多與《PHP教程:CodeIgniter控制器之業務邏輯實例分析》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7702.html