摘要:通過這個函數可以很方便的在程序運行期間執行很多常見操作。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。
index.php
index.php 是整個框架的入口文件,也就是說所有的請求都要從它這里開始。因為 index.php 源碼非常簡潔,那么我們直接放一張源碼截圖,按著截圖說一下源碼。
文件位置:/index.php
代碼很簡單,一共7行,前幾行還只是定義一些變量,屬于前言,就像是我的筆記之一,看不看沒什么用啊。第六行進入了正題,它new了一個新的對象 $path ,根據前邊 require 的路徑,可以找到 paths.php 的源碼:
文件位置:/application/config/paths.php
可以看出來這個類定義了系統目錄的位置,因此如果有想定制目錄結構的同學,這里肯定也要相應修改下。
因為我們主要是搞源碼,肯定不會改動目錄,因此這個文件對我們用處不大。
回到 index.php ,那么只剩下兩行代碼了:
$app = require rtrim($paths->systemDirectory,"/ ")."/bootstrap.php"; $app->run();
這兩行代碼就像開機鍵一樣,就那么瀟灑的執行下,你的整個程序就跑起來了。
第一行代碼 require 了一個 bootstrap.php 文件,在這個文件里,完成了整個 CI 框架的初始化,包括自動加載等等。
$app->run() 這一行,完成了整個應用程序的運行。因為之后還要對這兩行代碼深入講,這里僅僅帶過。
以下是程序的執行過程:
bootstrap.php 文件:bootstrap.php 是整個 CI 的 “BIOS 系統”,它僅僅負責初始化一些自動加載和找到 Codeigniter 核心一并初始化后返回給入口文件。
下面是 bootstrap.php 的源碼截圖:
第 9 行之前全部是定義一些路徑常量
第 9 行 require 進來了一些常量,如果你有自己的一些常量也可以考慮加到這個文件里,那么幾乎在整個 CI 執行期間應該都可以使用。
第 10 行 Common.php 這個文件定義了一些常用的函數,如 cache 、 view 、 session 等。通過這個函數可以很方便的在程序運行期間執行很多常見操作。
第 11 行是 CI 自己實現的自動加載類,大部分情況用于自動加載自己的類庫,當然為了能兼容大火的 Composer 在 18-20 行, 也對 Composer 進行了處理。
第 12 行是 CI 自己的自動加載的配置,如果你自己寫的類文件,想讓 CI 幫你自動加載,可以把類相關信息配置到這里。
第 13 行的 services.php 是個重頭戲,它是容器的一種實現,可以把你寫的一些類庫初始化信息配置在其中,那么需要的時候,可以像 15 行一樣直接使用這個類,并在運行期間保證了這個類的單實例化。
第 15 行如上所說,真正實例化了 CI 自己的 autoload 類,并在 16 行把 application 目錄下的 autoload 配置傳入,并在 17 行進行了注冊。
第 22 行,據 CI 注釋說:始終加載 url 這個 helper , 原因是 90% 的應用代碼都會用到它。話說這個 helper 函數是前邊 Common.php 加載進來的。
第 23 行是核心,它 new 了 Codeigniter 這個核心類,并把 application/config/app.php 的配置傳入了,在 24 行初始化了一下 ,隨之返回給了 index.php
下面以一張拙劣的流程圖結束本篇文章:
總結以及下節預告本節分析了一下 CI 的 BIOS 系統: bootstrap.php ,這個文件初始化了一些基本的類,找到并初始化了 CI 核心對象,同時將該對象返回給的入口文件。
下節當然要通覽一下 Codeigniter.php 文件。
此文可以轉載,但轉載前需要發郵件到imustgxd*sina.cn進行溝通,未溝通的均視作侵權。
轉載同時需注明原文鏈接 (https://segmentfault.com/a/11... ,并保留此段文字。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22894.html
摘要:行處理視圖文件名后綴。結語從源碼上看,使用了原始作為模版機制使得視圖邏輯非常簡單。無非也就是把視圖進來,用輸出緩沖把執行結果拿到即可。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 CI 的 View 沒有像 Laravel 等一些流行框架一樣設計的那么重,有自己的一套模版機制,CI 一直采用純天然的 PHP 模板形式,純天然的好處是不用再學習一套模板語言了,缺...
摘要:行,是否強制訪問。行,嘗試處理此次請求,詳細見方法。至此,的執行主流程完畢。小結是的核心文件,它被調用后,完成了諸多的主流程操作。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 Codeigniter.php 是 CI 4 的核心所在,在這里接收并處理了 request 請求,安全檢查,緩存處理, URL 解析以及路由匹配,執行過濾器,加載運行 Controll...
摘要:版權聲明可轉載,但不論任何媒體都需要在轉載前與本人溝通,并在轉載時注明出處。的各個核心模塊以模塊名為目錄名分別存儲在這個目錄下。下一篇文章會涉及到和。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 寫在前面: 為什么選擇開發過程中的 CI 4 作為源碼解讀版本:(1)首先我選 CI 是因為它之前的穩定版都是相對比較輕量小巧的,而且可以認為是簡單的。(2)為什么沒有選...
摘要:控制器嚴格來說,這個是控制器父類的源碼。在中,控制器僅負責接到返回的組裝的頁面字符串,并回核心中,由核心再處理后續事宜。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 其實一開始我是很糾結是否要寫控制器的源碼分析的,因為控制器的源碼太少了,少到你不相信這是一個 MVC 里的一個重頭。直覺里,大家都覺得控制器作為各個請求的入口,其后端應該有很多很多的代碼支撐才可以...
摘要:行,判斷如果為空,那么返回默認路由。行,把處理完畢后找到的返回。方法該方法是自動按著約定規則去目錄去找路由的過程。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 我個人覺得在當前 MVC 流行的架構下,要想去了解一個框架,或者是一個基于此架構下的應用程序,最好的入手方式就是先看路由,雖然路由不是 MVC 里的任何一個,但是知道了路由的來龍去脈就知道了整個框架或者...
閱讀 3366·2021-10-13 09:40
閱讀 2602·2021-10-08 10:17
閱讀 4007·2021-09-28 09:45
閱讀 939·2021-09-28 09:35
閱讀 1820·2019-08-30 10:51
閱讀 2912·2019-08-26 12:11
閱讀 1658·2019-08-26 10:41
閱讀 3104·2019-08-23 17:10