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

前言

CI 爲了追上「你們」的腳步,此次跨了一大步,儘可能使用了更多的流行設計理念,甚至連 PHP 的支持版本都是從 7 開始起步的。我在以前閱讀源碼的同時也發現了不少變化的地方,在此把已經發現的列舉出來,不過確定是不全的,由於我還沒讀完(逃跑~)。等再發現新的值得一聊的,而且能湊夠一篇文章的內容的話,我會再繼續寫一篇的。web

支持命名空間

CI 3 是沒有支持命名空間的。致使有些人相加一層 service 的話是藉助 model 或者是 library 實現的,用起來老是不三不四。不知道有多少等 CI 4 ,其中有部分緣由就是等它支持命名空間呢。segmentfault

更好的支持 Composer

以前的版本,雖然支持了 Composer ,可是由於不支持命名空間,致使不能發揮 composer 的所有功力。因而大部分人依舊是去官網下了 zip 包,解壓後吭哧吭哧本身造輪子。新版本應該可以很好的發揮 Composer 的功效了, packages 上的各類組件隨便用了。數組

view 再也不是 load 進來的了

以前,咱們要處理 view 的話,要使用load->view 感受上 controller 是主體, view 是被加載進來的。 CI 4 中 view 處理完畢後僅僅是個字符串,要在 controller 裏 return 會核內心,由核心再處理輸出,這樣整個流程就更清晰了。瀏覽器

代碼和資源文件分離了

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

配置文件再也不是簡單數組了

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

路由變化

增長閉包形式定義路由

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

$routes->add('feed', function()
   {
        return 'Simple Hello World.';
    {
);
能夠定義路由組

若是某一批路徑有着類似的前綴,可使用路由組,如後臺程序,一般喜歡給每一個路由前邊都加上一個 admin 用於區分後臺於前臺的頁面路徑。此時能夠以下定義:框架

$routes->group('admin', function($routes)
{
    $routes->add('users', 'Admin\Users::index');
    $routes->add('blogs',  'Admin\Blogs::index');
});

至關於定義了 admin/users 、 admin/blogs 兩個路由。post

能夠直接定義 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 同樣僅識別已經配置的路由,關閉後,處理完配置路由後如尚未發現匹配控制器將不會再繼續按着約定去自動尋找控制器文件。設置方法以下:

$routes->setAutoRoute(false);

小結

以上是目前發現的其中一部分變化,其實 CI 4 變化仍是比較大的。我在查看一部分源碼後感受有了不少 Laravel 的影子,或者說是如今比較流行的框架設計的思路。之後在後續的閱讀過程當中發現更多的有趣變化,我會繼續摘錄分享。

此文能夠轉載,但轉載前須要發郵件到imustgxd*sina.cn進行溝通,未溝通的均視做侵權。 轉載同時需註明原文連接
(https://segmentfault.com/a/11... ) ,並保留此段文字。

相關文章
相關標籤/搜索