在熟悉了ci的原始碼之後,它的簡單明瞭的**風格很有趣,這篇文章看看在ci是如何實現擴充套件的.
擴充套件是與controller通訊的,所以呼叫方式是這樣:$this->load->library('newlibrary')
.可以檢視ci中系統的library:乙個擴充套件基本上只有乙個類來完成,雖然用到了類,但並沒有完全執行物件導向的中開發原則,仔細地看**可以發現,這些類基本上都是面向過程的(物件導向與面向過程程式設計的核心區別在於職責的分配),也就只做了封裝.從這一點可以看出來,library的目的只是為了實現ci的設計與架構目標.所以拒絕了複雜的物件導向.
所以,開發起來就只有乙個需要注意的--盡量用乙個類檔案來完成
ci是以簡明著稱,它所提供的功能足以滿足使用該框架的需要,但特殊情況不可避免,有時候需對ci系統進行一點小小的改動,這時,就需要對該系統進行擴充套件了,如何解決?這一點ci已經為我們開放了介面--擴充套件框架核心
要能使用它所提供的功能,就需明白"鉤子","掛鉤點".
這個名稱起的好,該名稱很好的展現了在系統中"鉤子"的作用.與在生活中的使用場景一樣,鉤子就是用來勾住東西的.在系統中一樣,鉤子用來勾住需要的類,用類做點什麼,所以示例中是所展現的意思就很清晰了
$hook['pre_controller'] = array(
'class' => 'myclass',
'function' => 'mymethod',
'filename' => 'myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
鉤子必須要屬於誰,就像乙個魚鉤釣起來的魚當然屬於這個釣魚的人了,所以系統的中"鉤子"就屬於"掛鉤點",這樣,我們就可以通過"掛鉤點"使用這個鉤子.
為什麼要這樣做? 在ci中,框架並大量沒有運用物件導向,所以鉤子這個概念是物件導向中觀察者模式的乙個非物件導向的實踐.這個概念在wordpress中同樣存在,同樣wordpress也未大量使用物件導向.
ci中的擴充套件分為以上兩種,要理解起來並不難,熟悉熟悉它的**風格就比較容易理解各部分的工作機制了.
CI擴充套件service服務層
基於ci框架版本3.1.5 1.在專案核心core目錄下新建自己的loader.php檔案並繼承ci loader created by phpstorm.user wang.liangliang date 2017 7 7 time 13 07 class my loader extends ci...
CI框架擴充套件系統類庫
ci框架不支援像yii2框架那樣,可以直接在controllers下建立commoncontroller並繼承父類,那麼我們想要做登入控制或許可權控制時,直接在父類控制器操作是不合理的。這時比較方便的方法就是擴充套件父類的ci controller.在core目錄下建立乙個自定義類,以my 為字首,...
筆記 使用擴充套件的CI框架實現RESTful框架
rest 表現層狀態轉化 是一種原則,而符合這種原則的架構就稱之為restful架構。表現 通過 get library 1 book 2 這種風格的uri來訪問控制器並傳遞引數 其中get是不出現在uri中的,而是一種操作方式 get post delete put 控制器通過判斷請求的方式,來決...