成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Codeigniter 4.0-dev 版源碼學習筆記之五——相對于 3.x 的變化

Youngdze / 998人閱讀

摘要:支持命名空間是沒有支持命名空間的。配置文件不再是簡單數(shù)組了新的配置文件是以對象組織的,各個配置以對象的屬性形式暴露出來。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進行溝通,未溝通的均視作侵權(quán)。

前言

CI 為了追上“大家”的腳步,這次跨了一大步,盡量使用了更多的流行設計理念,甚至連 PHP 的支持版本都是從 7 開始起步的。我在之前閱讀源碼的同時也發(fā)現(xiàn)了很多變化的地方,在此把已經(jīng)發(fā)現(xiàn)的列舉出來,不過肯定是不全的,因為我還沒讀完(逃跑~)。等再發(fā)現(xiàn)新的值得一聊的,并且能湊夠一篇文章的內(nèi)容的話,我會再繼續(xù)寫一篇的。

支持命名空間

CI 3 是沒有支持命名空間的。導致有些人相加一層 service 的話是借助 model 或者是 library 實現(xiàn)的,用起來總是不倫不類。不知道有多少等 CI 4 ,其中有部分原因就是等它支持命名空間呢。

更好的支持 Composer

之前的版本,雖然支持了 Composer ,但是因為不支持命名空間,導致不能發(fā)揮 composer 的全部功力。于是大部分人依舊是去官網(wǎng)下了 zip 包,解壓后吭哧吭哧自己造輪子。新版本應該能夠很好的發(fā)揮 Composer 的功效了, packages 上的各種組件隨便用了。

view 不再是 load 進來的了

之前,我們要處理 view 的話,要使用load->view 感覺上 controller 是主體, view 是被加載進來的。 CI 4 中 view 處理完畢后僅僅是個字符串,要在 controller 里 return 會核心里,由核心再處理輸出,這樣整個流程就更清晰了。

代碼和資源文件分離了

新的代碼組織方式要求將 web 站點根目錄指向到 public 目錄, public 目錄僅僅一個入口文件以及靜態(tài)的圖片和 CSS 資源等,代碼文件都在上一級目錄中分布,這不僅可以使 web 目錄更加簡潔清晰,同時也能增加一些安全性。

配置文件不再是簡單數(shù)組了

新的配置文件是以對象組織的,各個配置以對象的屬性形式暴露出來。

路由變化
增加閉包形式定義路由

可以用閉包形式直接定義一個簡單的路由,此路由可以不對應 controller ,舉例如下:

$routes->add("feed", function()
   {
        return "Simple Hello World.";
    {
);
可以定義路由組

如果某一批路徑有著相似的前綴,可以使用路由組,如后臺程序,通常喜歡給每個路由前邊都加上一個 admin 用于區(qū)分后臺于前臺的頁面路徑。此時可以如下定義:

$routes->group("admin", function($routes)
{
    $routes->add("users", "AdminUsers::index");
    $routes->add("blogs",  "AdminBlogs::index");
});

相當于定義了 admin/users 、 admin/blogs 兩個路由。

可以直接定義 RESTful 形式路由

可以很方便以以下形式定義此類型路由:

$routes->resource("users");

// 以上形式等價于:
$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");

當然,瀏覽器不能直接處理 put 等形式請求,需要借助 post 并加一個 _method 的隱藏域來完成。

關閉自動路由

可以像 Laravel 一樣僅識別已經(jīng)配置的路由,關閉后,處理完配置路由后如還沒有發(fā)現(xiàn)匹配控制器將不會再繼續(xù)按著約定去自動尋找控制器文件。設置方法如下:

$routes->setAutoRoute(false);
小結(jié)

以上是目前發(fā)現(xiàn)的其中一部分變化,其實 CI 4 變化還是比較大的。我在查看一部分源碼后感覺有了很多 Laravel 的影子,或者說是現(xiàn)在比較流行的框架設計的思路。以后在后續(xù)的閱讀過程中發(fā)現(xiàn)更多的有趣變化,我會繼續(xù)摘錄分享。

此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到imustgxd*sina.cn進行溝通,未溝通的均視作侵權(quán)。 轉(zhuǎn)載同時需注明原文鏈接
(https://segmentfault.com/a/11... ) ,并保留此段文字。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22936.html

相關文章

  • Codeigniter 4.0-dev 源碼學習筆記之一——前言以及 CI 4 預覽

    摘要:版權(quán)聲明可轉(zhuǎn)載,但不論任何媒體都需要在轉(zhuǎn)載前與本人溝通,并在轉(zhuǎn)載時注明出處。的各個核心模塊以模塊名為目錄名分別存儲在這個目錄下。下一篇文章會涉及到和。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進行溝通,未溝通的均視作侵權(quán)。 寫在前面: 為什么選擇開發(fā)過程中的 CI 4 作為源碼解讀版本:(1)首先我選 CI 是因為它之前的穩(wěn)定版都是相對比較輕量小巧的,而且可以認為是簡單的。(2)為什么沒有選...

    MSchumi 評論0 收藏0
  • Codeigniter 4.0-dev 源碼學習筆記之四——詳細路由過程

    摘要:行,判斷如果為空,那么返回默認路由。行,把處理完畢后找到的返回。方法該方法是自動按著約定規(guī)則去目錄去找路由的過程。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進行溝通,未溝通的均視作侵權(quán)。 前言 我個人覺得在當前 MVC 流行的架構(gòu)下,要想去了解一個框架,或者是一個基于此架構(gòu)下的應用程序,最好的入手方式就是先看路由,雖然路由不是 MVC 里的任何一個,但是知道了路由的來龍去脈就知道了整個框架或者...

    NSFish 評論0 收藏0
  • Codeigniter 4.0-dev 源碼學習筆記之三——核心文件 Codeigniter.ph

    摘要:行,是否強制訪問。行,嘗試處理此次請求,詳細見方法。至此,的執(zhí)行主流程完畢。小結(jié)是的核心文件,它被調(diào)用后,完成了諸多的主流程操作。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進行溝通,未溝通的均視作侵權(quán)。 前言 Codeigniter.php 是 CI 4 的核心所在,在這里接收并處理了 request 請求,安全檢查,緩存處理, URL 解析以及路由匹配,執(zhí)行過濾器,加載運行 Controll...

    alighters 評論0 收藏0
  • Codeigniter 4.0-dev 源碼學習筆記之二——入口以及初始化操作

    摘要:通過這個函數(shù)可以很方便的在程序運行期間執(zhí)行很多常見操作。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進行溝通,未溝通的均視作侵權(quán)。 index.php index.php 是整個框架的入口文件,也就是說所有的請求都要從它這里開始。因為 index.php 源碼非常簡潔,那么我們直接放一張源碼截圖,按著截圖說一下源碼。 showImg(https://segmentfault.com/img/re...

    _ivan 評論0 收藏0
  • Codeigniter 4.0-dev 源碼學習筆記之六——控制器

    摘要:控制器嚴格來說,這個是控制器父類的源碼。在中,控制器僅負責接到返回的組裝的頁面字符串,并回核心中,由核心再處理后續(xù)事宜。此文可以轉(zhuǎn)載,但轉(zhuǎn)載前需要發(fā)郵件到進行溝通,未溝通的均視作侵權(quán)。 前言 其實一開始我是很糾結(jié)是否要寫控制器的源碼分析的,因為控制器的源碼太少了,少到你不相信這是一個 MVC 里的一個重頭。直覺里,大家都覺得控制器作為各個請求的入口,其后端應該有很多很多的代碼支撐才可以...

    asce1885 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<