摘要:支持命名空間是沒有支持命名空間的。配置文件不再是簡單數(shù)組了新的配置文件是以對象組織的,各個(gè)配置以對象的屬性形式暴露出來。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。
前言
CI 為了追上“大家”的腳步,這次跨了一大步,盡量使用了更多的流行設(shè)計(jì)理念,甚至連 PHP 的支持版本都是從 7 開始起步的。我在之前閱讀源碼的同時(shí)也發(fā)現(xiàn)了很多變化的地方,在此把已經(jīng)發(fā)現(xiàn)的列舉出來,不過肯定是不全的,因?yàn)槲疫€沒讀完(逃跑~)。等再發(fā)現(xiàn)新的值得一聊的,并且能湊夠一篇文章的內(nèi)容的話,我會(huì)再繼續(xù)寫一篇的。
支持命名空間CI 3 是沒有支持命名空間的。導(dǎo)致有些人相加一層 service 的話是借助 model 或者是 library 實(shí)現(xiàn)的,用起來總是不倫不類。不知道有多少等 CI 4 ,其中有部分原因就是等它支持命名空間呢。
更好的支持 Composer之前的版本,雖然支持了 Composer ,但是因?yàn)椴恢С置臻g,導(dǎo)致不能發(fā)揮 composer 的全部功力。于是大部分人依舊是去官網(wǎng)下了 zip 包,解壓后吭哧吭哧自己造輪子。新版本應(yīng)該能夠很好的發(fā)揮 Composer 的功效了, packages 上的各種組件隨便用了。
view 不再是 load 進(jìn)來的了之前,我們要處理 view 的話,要使用load->view 感覺上 controller 是主體, view 是被加載進(jìn)來的。 CI 4 中 view 處理完畢后僅僅是個(gè)字符串,要在 controller 里 return 會(huì)核心里,由核心再處理輸出,這樣整個(gè)流程就更清晰了。
代碼和資源文件分離了新的代碼組織方式要求將 web 站點(diǎn)根目錄指向到 public 目錄, public 目錄僅僅一個(gè)入口文件以及靜態(tài)的圖片和 CSS 資源等,代碼文件都在上一級目錄中分布,這不僅可以使 web 目錄更加簡潔清晰,同時(shí)也能增加一些安全性。
配置文件不再是簡單數(shù)組了新的配置文件是以對象組織的,各個(gè)配置以對象的屬性形式暴露出來。
路由變化可以用閉包形式直接定義一個(gè)簡單的路由,此路由可以不對應(yīng) controller ,舉例如下:
$routes->add("feed", function() { return "Simple Hello World."; { );
如果某一批路徑有著相似的前綴,可以使用路由組,如后臺程序,通常喜歡給每個(gè)路由前邊都加上一個(gè) admin 用于區(qū)分后臺于前臺的頁面路徑。此時(shí)可以如下定義:
$routes->group("admin", function($routes) { $routes->add("users", "AdminUsers::index"); $routes->add("blogs", "AdminBlogs::index"); });
相當(dāng)于定義了 admin/users 、 admin/blogs 兩個(gè)路由。
可以很方便以以下形式定義此類型路由:
$routes->resource("users"); // 以上形式等價(jià)于: $routes->get("users", "Users::listAll"); $routes->get("users/(:segment)", "Users::show/$1"); $routes->post("users", "Users::create"); $routes->put("users/(:segment)", "Users::update/$1"); $routes->delete("users/(:segment)", "Users::delete/$1");
當(dāng)然,瀏覽器不能直接處理 put 等形式請求,需要借助 post 并加一個(gè) _method 的隱藏域來完成。
可以像 Laravel 一樣僅識別已經(jīng)配置的路由,關(guān)閉后,處理完配置路由后如還沒有發(fā)現(xiàn)匹配控制器將不會(huì)再繼續(xù)按著約定去自動(dòng)尋找控制器文件。設(shè)置方法如下:
$routes->setAutoRoute(false);小結(jié)
以上是目前發(fā)現(xiàn)的其中一部分變化,其實(shí) CI 4 變化還是比較大的。我在查看一部分源碼后感覺有了很多 Laravel 的影子,或者說是現(xiàn)在比較流行的框架設(shè)計(jì)的思路。以后在后續(xù)的閱讀過程中發(fā)現(xiàn)更多的有趣變化,我會(huì)繼續(xù)摘錄分享。
此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到imustgxd*sina.cn進(jìn)行溝通,未溝通的均視作侵權(quán)。 轉(zhuǎn)載同時(shí)需注明原文鏈接
(https://segmentfault.com/a/11... ) ,并保留此段文字。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/22936.html
摘要:版權(quán)聲明可轉(zhuǎn)載,但不論任何媒體都需要在轉(zhuǎn)載前與本人溝通,并在轉(zhuǎn)載時(shí)注明出處。的各個(gè)核心模塊以模塊名為目錄名分別存儲(chǔ)在這個(gè)目錄下。下一篇文章會(huì)涉及到和。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 寫在前面: 為什么選擇開發(fā)過程中的 CI 4 作為源碼解讀版本:(1)首先我選 CI 是因?yàn)樗暗姆€(wěn)定版都是相對比較輕量小巧的,而且可以認(rèn)為是簡單的。(2)為什么沒有選...
摘要:行,判斷如果為空,那么返回默認(rèn)路由。行,把處理完畢后找到的返回。方法該方法是自動(dòng)按著約定規(guī)則去目錄去找路由的過程。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 我個(gè)人覺得在當(dāng)前 MVC 流行的架構(gòu)下,要想去了解一個(gè)框架,或者是一個(gè)基于此架構(gòu)下的應(yīng)用程序,最好的入手方式就是先看路由,雖然路由不是 MVC 里的任何一個(gè),但是知道了路由的來龍去脈就知道了整個(gè)框架或者...
摘要:行,是否強(qiáng)制訪問。行,嘗試處理此次請求,詳細(xì)見方法。至此,的執(zhí)行主流程完畢。小結(jié)是的核心文件,它被調(diào)用后,完成了諸多的主流程操作。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 Codeigniter.php 是 CI 4 的核心所在,在這里接收并處理了 request 請求,安全檢查,緩存處理, URL 解析以及路由匹配,執(zhí)行過濾器,加載運(yùn)行 Controll...
摘要:通過這個(gè)函數(shù)可以很方便的在程序運(yùn)行期間執(zhí)行很多常見操作。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 index.php index.php 是整個(gè)框架的入口文件,也就是說所有的請求都要從它這里開始。因?yàn)?index.php 源碼非常簡潔,那么我們直接放一張?jiān)创a截圖,按著截圖說一下源碼。 showImg(https://segmentfault.com/img/re...
摘要:控制器嚴(yán)格來說,這個(gè)是控制器父類的源碼。在中,控制器僅負(fù)責(zé)接到返回的組裝的頁面字符串,并回核心中,由核心再處理后續(xù)事宜。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進(jìn)行溝通,未溝通的均視作侵權(quán)。 前言 其實(shí)一開始我是很糾結(jié)是否要寫控制器的源碼分析的,因?yàn)榭刂破鞯脑创a太少了,少到你不相信這是一個(gè) MVC 里的一個(gè)重頭。直覺里,大家都覺得控制器作為各個(gè)請求的入口,其后端應(yīng)該有很多很多的代碼支撐才可以...
閱讀 1733·2021-11-24 10:18
閱讀 2207·2021-11-18 13:20
閱讀 2332·2021-08-23 09:46
閱讀 993·2019-08-30 15:56
閱讀 2840·2019-08-30 15:53
閱讀 738·2019-08-30 14:22
閱讀 470·2019-08-29 15:34
閱讀 2532·2019-08-29 12:14