爲何選擇開發過程當中的 CI 4 做爲源碼解讀版本:(1)首先我選 CI 是由於它以前的穩定版都是相對比較輕量小巧的,並且能夠認爲是簡單的。(2)爲何沒有選擇目前穩定的 3.x 版是由於我我的認爲這個版本由於歷史包袱緣由確實在理念方面有些老了,用它沒問題,可是學習它就不值得了。(3)選一個開發尚未穩定版的緣由:既然僅僅是學習,即便的不穩定版應該也不會耽誤咱們去了解它,還有就是聽說 CI 4 爲了追趕潮流,用了不少的新特性,甚至直接提示 PHP 必須是7以上了。php
寫本文的目的:學習爲主,同時把心得分享給你們。html
CI 4 發佈了正式版後如何:我會常常關注 CI 4 的進展,若是正式版發佈了,而且架構沒有太大變更,我會更新本文。git
版權聲明:可轉載,但不論任何媒體都須要在轉載前與本人溝通(imustgxd*sina&cn),並在轉載時註明出處。github
錯誤聲明:本人水平有限,該系列文章中可能會出現低級錯誤甚至「南轅北轍」的狀況發生,請用中肯非激進的語言指正。web
筆記時間:2017年4月。數據庫
P.S. 有一本書叫作《PHP 6 高級編程》,而後 PHP 跳過了,但願 CI 別跳過 4 ,不過無所謂啦,畢竟只是讀一下源碼而已。編程
下面進入正文:bootstrap
CI 4 開發版是在 github (https://github.com/bcit-ci/Co... 上下載的,直接點擊 clone or download 下載 zip 包。segmentfault
目前 CI 4 的文檔尚未定稿,不過能夠做爲參考,網址是:https://bcit-ci.github.io/Cod...緩存
參考文檔中的提示,咱們把 CI 的zip包解壓,而且網站根目錄指向 public 文件夾。CI 4 參考了 Laravel 、 YII2 等流行框架的作法,不在將全部的源碼都扔進 web 服務器的可訪問目錄,這樣作會更安全些。舉個簡單例子,常常有黑客會找上傳漏洞,而後把未經許可的文件上傳到 web 目錄,若是上傳的是個 php 文件,同時又在裏邊加了一些高權限的代碼,後果不堪設想,而若是是這種模式,那麼就能夠把 public 目錄在發佈時設置成只讀模式,甚至設置成只執行 index.php 這一個腳本,那麼就會安全多了。部署好後,咱們訪問 http://localhost 若是看到了大大的 Welcome to CodeIgniter ,說明已經部署成功。
既然已經基本部署完畢,那麼先來預覽一下目錄結構吧:
能夠看到依舊是咱們熟悉的 CI 味道。
application 是存儲咱們應用源碼的位置。
/application /Config 存儲配置信息 /Controllers 控制器存儲位置 /Helpers 存儲自定義的輔助函數 /Language 自定義的語言文件 /Libraries 自定義的類庫 /Models 數據庫模型以及業務邏輯 /Views 視圖文件
public 是 web 服務器要指向的位置,另外一些 CSS 以及圖片等資源文件也能夠保存到這裏。裏面已經包含了 .htaccess 文件,默認就已經將 URL 路徑中的 index.php 去掉了,同時已經處理好了 CSS , 圖片 , html 等一些靜態資源,確保能直接訪問。
system 是 CI 核心源碼存放位置,咱們須要解讀的大部分源碼都在這裏。
CI 的各個核心模塊以模塊名爲目錄名分別存儲在這個目錄下。在後續的章節會根據須要介紹到一部分。
其中 bootstrap.php , CodeIgniter.php 是 CI 執行流程過程當中用到的核心文件。
bootstrap.php 會被 public 下的 index.php 調用,形象點說, index.php 是程序入口,就像是 PC 的開機鍵,bootstrap.php 就像是 BIOS 只負責基本程序的加載檢測以及準備過程,如自動加載等,CodeIgniter.php 更像是 PC 的 OS ,全部的模塊包括控制器、這種類庫就像是應用軟件同樣被 CodeIgniter.php 調用並加載。
先扔一張所謂的結構圖,供啓發一下思路,注意,不是流程圖。
此目錄是寫測試用例的地方,裏邊有個readme.md 文件,能夠參考此文件部署以及書寫測試用例。
顧名思義,是可寫的文件夾,裏邊存 CI 的緩存文件、日誌文件、以及上傳文件。與源碼關係不大,如今很少說,等須要時再聊聊。
本篇文章算是一個開頭,整體預覽一下 CI 的基本結構。下一篇文章會涉及到 index.php 和 bootstrap.php 。
此文能夠轉載,但轉載前須要發郵件到imustgxd*sina.cn進行溝通,未溝通的均視做侵權。
轉載同時需註明原文連接 (https://segmentfault.com/a/11... ,並保留此段文字。