摘要:版權(quán)聲明可轉(zhuǎn)載,但不論任何媒體都需要在轉(zhuǎn)載前與本人溝通,并在轉(zhuǎn)載時注明出處。的各個核心模塊以模塊名為目錄名分別存儲在這個目錄下。下一篇文章會涉及到和。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。
寫在前面:
為什么選擇開發(fā)過程中的 CI 4 作為源碼解讀版本:(1)首先我選 CI 是因為它之前的穩(wěn)定版都是相對比較輕量小巧的,而且可以認(rèn)為是簡單的。(2)為什么沒有選擇目前穩(wěn)定的 3.x 版是因為我個人認(rèn)為這個版本因為歷史包袱原因確實在理念方面有些老了,用它沒問題,但是學(xué)習(xí)它就不值得了。(3)選一個開發(fā)還沒有穩(wěn)定版的原因:既然僅僅是學(xué)習(xí),即使的不穩(wěn)定版應(yīng)該也不會耽誤我們?nèi)チ私馑?,還有就是據(jù)說 CI 4 為了追趕潮流,用了很多的新特性,甚至直接提示 PHP 必須是7以上了。
寫本文的目的:學(xué)習(xí)為主,同時把心得分享給大家。
CI 4 發(fā)布了正式版后如何:我會經(jīng)常關(guān)注 CI 4 的進(jìn)展,如果正式版發(fā)布了,并且架構(gòu)沒有太大變動,我會更新本文。
版權(quán)聲明:可轉(zhuǎn)載,但不論任何媒體都需要在轉(zhuǎn)載前與本人溝通(imustgxd*sina&cn),并在轉(zhuǎn)載時注明出處。
錯誤聲明:本人水平有限,該系列文章中可能會出現(xiàn)低級錯誤甚至“南轅北轍”的情況發(fā)生,請用中肯非激進(jìn)的語言指正。
筆記時間:2017年4月。
P.S. 有一本書叫做《PHP 6 高級編程》,然后 PHP 跳過了,希望 CI 別跳過 4 ,不過無所謂啦,畢竟只是讀一下源碼而已。
下面進(jìn)入正文:
CI 4 的下載和基本部署CI 4 開發(fā)版是在 github (https://github.com/bcit-ci/Co... 上下載的,直接點擊 clone or download 下載 zip 包。
目前 CI 4 的文檔還沒有定稿,不過可以作為參考,網(wǎng)址是:https://bcit-ci.github.io/Cod...
參考文檔中的提示,我們把 CI 的zip包解壓,并且網(wǎng)站根目錄指向 public 文件夾。CI 4 參考了 Laravel 、 YII2 等流行框架的做法,不在將所有的源碼都扔進(jìn) web 服務(wù)器的可訪問目錄,這樣做會更安全些。舉個簡單例子,經(jīng)常有黑客會找上傳漏洞,然后把未經(jīng)許可的文件上傳到 web 目錄,如果上傳的是個 php 文件,同時又在里邊加了一些高權(quán)限的代碼,后果不堪設(shè)想,而如果是這種模式,那么就可以把 public 目錄在發(fā)布時設(shè)置成只讀模式,甚至設(shè)置成只執(zhí)行 index.php 這一個腳本,那么就會安全多了。部署好后,我們訪問 http://localhost 如果看到了大大的 Welcome to CodeIgniter ,說明已經(jīng)部署成功。
CI 4 源碼目錄既然已經(jīng)基本部署完畢,那么先來預(yù)覽一下目錄結(jié)構(gòu)吧:
可以看到依舊是我們熟悉的 CI 味道。
applicationapplication 是存儲我們應(yīng)用源碼的位置。
/application /Config 存儲配置信息 /Controllers 控制器存儲位置 /Helpers 存儲自定義的輔助函數(shù) /Language 自定義的語言文件 /Libraries 自定義的類庫 /Models 數(shù)據(jù)庫模型以及業(yè)務(wù)邏輯 /Views 視圖文件public
public 是 web 服務(wù)器要指向的位置,另一些 CSS 以及圖片等資源文件也可以保存到這里。里面已經(jīng)包含了 .htaccess 文件,默認(rèn)就已經(jīng)將 URL 路徑中的 index.php 去掉了,同時已經(jīng)處理好了 CSS , 圖片 , html 等一些靜態(tài)資源,確保能直接訪問。
systemsystem 是 CI 核心源碼存放位置,我們需要解讀的大部分源碼都在這里。
CI 的各個核心模塊以模塊名為目錄名分別存儲在這個目錄下。在后續(xù)的章節(jié)會根據(jù)需要介紹到一部分。
其中 bootstrap.php , CodeIgniter.php 是 CI 執(zhí)行流程過程中用到的核心文件。
bootstrap.php 會被 public 下的 index.php 調(diào)用,形象點說, index.php 是程序入口,就像是 PC 的開機鍵,bootstrap.php 就像是 BIOS 只負(fù)責(zé)基本程序的加載檢測以及準(zhǔn)備過程,如自動加載等,CodeIgniter.php 更像是 PC 的 OS ,所有的模塊包括控制器、這種類庫就像是應(yīng)用軟件一樣被 CodeIgniter.php 調(diào)用并加載。
先扔一張所謂的結(jié)構(gòu)圖,供啟發(fā)一下思路,注意,不是流程圖。
test此目錄是寫測試用例的地方,里邊有個readme.md 文件,可以參考此文件部署以及書寫測試用例。
writable顧名思義,是可寫的文件夾,里邊存 CI 的緩存文件、日志文件、以及上傳文件。與源碼關(guān)系不大,現(xiàn)在不多說,等需要時再聊聊。
總結(jié)本篇文章算是一個開頭,總體預(yù)覽一下 CI 的基本結(jié)構(gòu)。下一篇文章會涉及到 index.php 和 bootstrap.php 。
此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到imustgxd*sina.cn進(jìn)行溝通,未溝通的均視作侵權(quán)。
轉(zhuǎn)載同時需注明原文鏈接 (https://segmentfault.com/a/11... ,并保留此段文字。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22898.html
摘要:通過這個函數(shù)可以很方便的在程序運行期間執(zhí)行很多常見操作。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 index.php index.php 是整個框架的入口文件,也就是說所有的請求都要從它這里開始。因為 index.php 源碼非常簡潔,那么我們直接放一張源碼截圖,按著截圖說一下源碼。 showImg(https://segmentfault.com/img/re...
摘要:行,是否強制訪問。行,嘗試處理此次請求,詳細(xì)見方法。至此,的執(zhí)行主流程完畢。小結(jié)是的核心文件,它被調(diào)用后,完成了諸多的主流程操作。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 Codeigniter.php 是 CI 4 的核心所在,在這里接收并處理了 request 請求,安全檢查,緩存處理, URL 解析以及路由匹配,執(zhí)行過濾器,加載運行 Controll...
摘要:行,判斷如果為空,那么返回默認(rèn)路由。行,把處理完畢后找到的返回。方法該方法是自動按著約定規(guī)則去目錄去找路由的過程。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 我個人覺得在當(dāng)前 MVC 流行的架構(gòu)下,要想去了解一個框架,或者是一個基于此架構(gòu)下的應(yīng)用程序,最好的入手方式就是先看路由,雖然路由不是 MVC 里的任何一個,但是知道了路由的來龍去脈就知道了整個框架或者...
摘要:支持命名空間是沒有支持命名空間的。配置文件不再是簡單數(shù)組了新的配置文件是以對象組織的,各個配置以對象的屬性形式暴露出來。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 CI 為了追上大家的腳步,這次跨了一大步,盡量使用了更多的流行設(shè)計理念,甚至連 PHP 的支持版本都是從 7 開始起步的。我在之前閱讀源碼的同時也發(fā)現(xiàn)了很多變化的地方,在此把已經(jīng)發(fā)現(xiàn)的列舉出來,不...
摘要:行處理視圖文件名后綴。結(jié)語從源碼上看,使用了原始作為模版機制使得視圖邏輯非常簡單。無非也就是把視圖進(jìn)來,用輸出緩沖把執(zhí)行結(jié)果拿到即可。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 CI 的 View 沒有像 Laravel 等一些流行框架一樣設(shè)計的那么重,有自己的一套模版機制,CI 一直采用純天然的 PHP 模板形式,純天然的好處是不用再學(xué)習(xí)一套模板語言了,缺...
閱讀 2010·2021-11-22 14:45
閱讀 2640·2021-10-12 10:11
閱讀 791·2021-09-22 10:02
閱讀 1292·2019-08-30 15:55
閱讀 1178·2019-08-30 15:54
閱讀 3288·2019-08-30 15:54
閱讀 1223·2019-08-29 17:16
閱讀 3113·2019-08-28 17:55