国内有两款开源的php框架比较火,一款是国产神器的thinkphp,一款是常年在榜单第一的位置的lavavel,对于新手还是老手有个疑问,我做项目来说选用哪一款来做对我的项目是帮助最大的呢?今天带你们来全面对比下这两款框架。一:框架介绍: thinkphp:是国内领先的WEB应用和服务提供商致力于WEB应用平台、产品和应用的研发和服务,为企事业单位提供基于WEB的应用开发快速解决方案和产品。公司成立于2008年9月,是一家拥有自主知识产权的高新企业。是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
lavavel:Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
二:优势对比:thinkphp:ORM:简洁轻巧的ORM实现,配合简单的CURD以及AR模式,让开发效率无处不在。
查询语言:内建丰富的查询机制,包括组合查询、复合查询、区间查询、统计查询、定位查询、动态查询和原生查询,让你的数据查询简洁高效。扩展机制:系统支持包括类库扩展、驱动扩展、应用扩展、模型扩展、控制器扩展、标签库扩展、模板引擎扩展、Widget扩展、行为扩展和模式扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足和无所适从,随心DIY自己的框架和扩展应用。分组模块:不用担心大项目的分工协调和部署问题,分组模块帮你解决跨项目的难题。 AJAX支持:内置AJAX数据返回方法,支持JSON、xml和EVAL格式返回客户端,并且系统不绑定任何AJAX类库,可随意使用自己熟悉的AJAX类库进行操作。视图模型:轻松动态地创建数据库视图,多表查询不再烦恼。 关联模型:让你以出乎意料的简单、灵活的方式完成多表的关联操作。数据库特性:系统支持多数据库连接和动态切换机制,支持分布式数据库。犹如企业开发的一把利刃,跨数据库应用和分布式支持从此无忧。
lavavel的优势:Laravel的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD和BDD,作为一个框架,它为你准备好了一切,composer是个php的未来,没有composer,PHP肯定要走向没落。laravel最大的特点和优秀之处就是集合了php比较新的特性,以及各种各样的设计模式,Ioc容器,依赖注入等。因此laravel是一个适合学习的框架,他和其他的框架思想有着极大的不同,这也要求你非常熟练php,基础扎实。如果你觉得laravel很困难 那么原因只有一个 你php基础不够好。通常觉得Laravel难学且无用的开发者中,只会PHP一门语言,或者说,没有静态编译型语言(如C/C++/Java/Go等)使用经验的开发者占绝大多数。三:区别:
主要区别:(thinkPHP更适合国人的编码习惯)
1.渲染模版方式的不同:
在Laravel框架里,使用return view()来渲染模版;
而ThinkPHP里则使用了$this->display()的方式渲染模版;
2.在Laravel框架里,由于其考虑到了跨站请求伪造, 所以如果使用form表单以post方式进行传值时,如果不再form表单中加入{{csrf_field()}}则会报出TokenMethodnotfound的语法错误;
而TP框架则需要自己手动完成防止跨站攻击的代码;
3.Laravel是一个重路由的框架(5.4),所有的功能都是由路由发起的,哪怕没有控制器方法,只要写了路由就能够访问,thinkPHP(3.2),必须要有控制器方法才能正常访问;
4.laravel具有强大的社区化扩展,(composer扩展自动加载);
5.laravel具有强大的Blade模版引擎;
6.中间件,Laravel特点,可以实现访问前后的处理,例如请求和返回,权限认证等;
7.条件判断语句书写方式的差异:
Laravel框架里 if else判断语句和foreach语句 书写时必须以@if开头 以@endif结尾,如果没有则报语法错误,@foreach @endforeach同理;
而TP框架则和PHP语法规则使用方式一致直接ifesle语句判断和foreach循环遍历
Laravel里内置了大量的方法供开发者使用,在实际应用中更接近于"让对象完成一切"的开发思想,比如在后台表单验证的时候,Laravel内置了大量的验证方法,例如对用户名的验证:我们使用可以validate方法里'username'=>'required'(不能为空)|alpha_dash(必须数字字母下划线)|between:6,18(在多少位数之间);还内置了例如email;same:字段名;diff:字段名等大量的方法极大的提高了开发速度;
加密方式 在TP框架中 我们对用户名密码进行加密时使用md5();的方式进行加密,但md5的缺点在于其可以逆向破解,而且在同等规则下同样的密码md5加密出的字符串是有可能出现相同的,这就降低其安全性;
但在Laravel框架中内置了"哈希"Hash加密单向加密方法,且同样的参数加密出的字符串是绝对不会出现相同的情况 这就提高了安全性;
在实际开发中我们常常遇到这样的问题,就是开发地点不固定,这就造成了我们需要频繁的更改数据库配置,给开发工作造成了麻烦,TP依然没有避免这个"灾难";在laravel框架中,.env环境文件的出现解决了这个麻烦,我们只需要在不同的工作地点配置好.env文件就不必再进行配置,因为无论是git还是svn " .env是不会随着文件一起提交到服务器的";所以当大家开发项目的时候是选择thinkphp还是laravel是看哪个更利于项目来操作的。