工作中使用的是TP框架,在工作之余接触了一下Yii框架和Laravel框架,为了更好的了解几种框架,此处总结一下几种框架各自的优势及缺点。

  一、CI框架

  CI框架是一个简单快速的PHP MVC轻量级框架,它执行效率高,快速简洁,代码量少,适合中小型项目开发,也可以做大型项目,但扩展能力不是很好。

  优势:框架比较简单,适合入门开发,易学,上手快,静态化很容易,文档比较详细。

  缺点:由于框架较小,所以功能不完全,比如使用mongoDB就要自己实现接口,对数据库的操作不够安全(写入操作)。对大型项目支持不好。

  开发工作流程:

  1、index.php作为前端控制器,初始化运行CodeIgniter所需要的基本资源。
  2、Router检查HTTP请求,以确定谁来处理请求。
  3、如果缓存(Cache)文件存在,它将绕过通常的系统执行顺序,被直接发送给浏览器。
  4、安全(Security)。应用程序控制器(ApplicationController)装载之前,HTTP请求和任何用户提交的数据将被过滤。
  5、控制器(Controller)装载模型、核心库、插件、辅助函数,以及任何处理特定请求所需的其它资源。
  6、最终视图(View)渲染发送到Web浏览器中的内容。如果开启缓存(Caching),视图首先被缓存,所以将可用于以后的请求。
 

  CI的url模式:

  Ci支持的url模式默认为pathinfo形式,也就是使用/隔开。其中//localhost/citest/index.php/ 是固定的,表示的就是入口文件

  例如://localhost/citest/index.php/hello/index

  二、ThinkPHP框架
  TP框架是一共快速兼容简单的轻量级国产PHP开发框架,使用面向对象的结构和MVC模式进行开发。它可以支持Windows、Linux等服务器,并且支持MySql、Sqlite等多种数据库和PDO扩展。其自身包含底层架构、兼容处理、基类库、数据库访问层、模版引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。适合中小型项目开发。

  优势:简单易用(Model,Controller,View负责各自的工作),它拥有支持XML标签库技术的编译型模版引擎,支持两种模版标签,动态编译,缓存技术。还支持自定义标签库,具有独特的数据验证和自动填充,MD5数据加密等功能。部署简单只需要一个入口文件,上手快。

  缺点:模版比较固定,导致思想容易固化。

  TP框架中提供的4种路由形式,其中rewrite路由方式需要另外修改配置才可使用,配置方法见 https://www.cnblogs.com/lovele-/p/9256575.html

  1、get路由形式;

    //网址/index.php?m=分组&c=控制器&a=方法(该形式书最底层的传输方式,不安全)。

  2、pathinfo路由形式【默认路由形式】:

    //网址/index.php/分组/控制器/方法

​  3、 rewrite路由形式;

    //网址/分组/控制器/方法

  4、 兼容路由形式:

    //网址/index.php?s=/分组/控制器/方法

  

  三、Laravel框架

  Laravel是一套简洁,优雅的PHP WEB开发框架。集合了PHP比较新的特性,以及各种的设计模式,是一个适合学习的框架,但要求PHP基础扎实熟练。适合大中型项目的开发。

  优势:

  1、支持Composer

  2、框架结构比较清晰,注重代码的模块化(抽象了中间件,任务,服务等)和可扩展性,路由系统快速高效

  3、支持处理跨站请求伪造,在进行form表单post提交时,必须传入{{ csrf_field() }}

  4、Laravel 的社区很强大,具有丰富的扩展包及工具

  5、具有缓存、身份验证、任务自动化、hash加密、事务等功能

  6、独特的 .env环境文件,方便了系统的配置和不同平台的开发

  缺点:基于组件式的框架,相对有点臃肿

  Laravel路由方法:laravel的路由功能很强大,包括

  1、基本路由Route::get('/',function(){   return'HelloWorld';});

  2、带参数路由Route::get('user/{id}', function($id){ return 'User '.$id;});

  3、路由过滤参数Route::get('user/{id}/{name}',function($id,$name){   //}) -> where(array('id'=> '[0-9]+', 'name' =>'[a-z]+'));

  4、子域名路由等等等等

  5、控制器路由,例如下面的一些样式

  Route::resource('article','ArticleController'); //restful方式(具体包括get/post等)

  Route::controller('article','ArticleController'); //restful方式(具体包括get/post等)

  Route::get('user/login','UserController@login');//非restful方式 get

  Route::post('user/i','UserController@login');//非restful方式post

  四、Yii 框架

  Yii Framework是一个基于组件、用于大规模web应用开发的高性能PHP开源框架,是目前最具效率的PHP框架之一。适合大型重量型web应用开发。

  优势:

  1、纯OOP开发,模型使用方便

  2、支持命令行工具开发,可以快速的创建一个web应用程序的代码

  3、具有高度的可重用性和可扩展性

  4、开发速度快,性能优异且功能丰富

  5、支持composer包管理工具

  缺点:model 层考虑较少,文档中中文文档较少。要求php技术精通水平,OOP编程也要很熟练

参考:

  https://blog.csdn.net/lixianseng/article/details/53260675

  https://blog.csdn.net/Just_shunjian/article/details/78469929

最新文章

  1. Windows 10系统更换Windows 7系统磁盘分区注意事项一
  2. ASP.NET 缓存
  3. hdu 1166
  4. Adobe Scout 入门
  5. linux5
  6. Qt可执行程序写入版本信息
  7. Cube Stacking
  8. MySQL 5.6 和 MariaDB-10.0 的性能比较测试
  9. db2数据库sql报错信息
  10. Java基础知识强化之IO流笔记20:FileOutputStream写出数据实现换行和追加写入
  11. R与数据分析旧笔记(八)多重共线性
  12. Word常用实用知识2
  13. java-生产者消费者模式
  14. 获取spring容器上下文(webApplicationContext)的几种方法
  15. ehcache memcache redis 三大缓存男高音[转]
  16. linux 安装图行界面
  17. Link-Cut-Tree详解
  18. 阿里云ECS服务器折腾记(一):小白入门遇到的各类问题
  19. 『编程题全队』Beta 阶段用户使用调查报告
  20. sql server 字符串分割函数

热门文章

  1. java基础笔记(9)
  2. Thinkphp设置PC和手机端模板
  3. 原生js事件委托(事件代理)方法扩展
  4. jupyter与requests的初步使用
  5. 分布式系统中唯一 ID 的生成方法
  6. django登录注册验证之密码包含特殊字符,确认密码一致实现,Form验证
  7. java中的四种引用方式(强引用,软引用,弱引用,虚引用)
  8. react 错误处理
  9. Python 自定义三方库
  10. Nginx和Apache 转发网络问题