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... ) ,并保留此段文字。

相关文章
相关标签/搜索