前言CI为了赶上“大家”,这次迈出了一大步,采用了更流行的设计理念,多达有可能,连支持的PHP版本都是从7开始的。之前看源码的时候,也发现了很多变化。在这里我把我找到的列出来,但肯定是不完整的,因为我还没看完(跑路~)。如果我发现了新的值得一说的东西,而且我能把一篇文章的内容补足,我会继续写另一篇文章。支持命名空间CI3不支持命名空间。有的人加一层服务,借助模型或者类库来实现,总是不伦不类。我不知道有多少人在等待CI4,部分原因是等待它支持名称空间。更好地支持以前版本的Composer,虽然支持Composer,但是由于不支持命名空间,所以无法发挥Composer的全部功能。所以大部分人还是去官网下载zip包,解压后自己造轮子。新版本应该可以很好的发挥Composer的作用,package上的各种组件可以随便用。在视图不再加载之前,如果我们要对视图进行处理,需要使用load->view。感觉就是以controller为主体,加载view。在CI4中,view处理完后,只是一个字符串,需要在controller中返回,返回给core,然后由core处理输出,这样整个过程就更加清晰了。代码和资源文件是分开的。新的代码组织方式要求网站根目录指向公共目录。public目录只有一个入口文件和静态图片和CSS资源。代码文件分布在上层目录,不仅可以让web目录更加简洁明了,也可以增加一些安全性。配置文件不再是一个简单的数组。新的配置文件是按对象组织的,每一个配置都以对象属性的形式暴露出来。路由更改添加一个闭包形式来定义路由。您可以直接以闭包的形式定义一个简单的路由。此路由可能不对应于控制器。例如:$routes->add('feed',function(){return'SimpleHelloWorld.';{);可以定义路由组。如果一批路径有相似的前缀,可以使用路由组,比如后台程序。通常,您喜欢为每个路由添加一个admin,以区分后台和前台页面路径。此时可以定义如下:$routes->group('admin',function($routes){$routes->add('users','Admin\Users::index');$routes->add('博客','Admin\Blogs::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');当然,browse设备不能直接处理put等请求,需要使用post加上_method的隐藏字段来完成。关闭自动路由只能像Laravel一样识别配置好的路由。关闭后,如果处理完配置的路由后没有找到匹配的controller,将不再按照约定继续自动搜索controller文件。设置方法如下:$routes->setAutoRoute(false);总结以上是目前发现的一些变化。其实CI4的变化还是比较大的。查看了部分源码,感觉有很多Laravel的影子,或者说是现在比较流行的一种框架设计思想。以后我会在后续的阅读过程中发现更多有趣的变化,我会继续摘录分享。本文可转载,但转载前需发邮件至imustgxd*sina.cn进行交流,未交流的视为侵权。转载时必须注明原文链接(https://segmentfault.com/a/11...),并保留此段文字。
