PHP框架之Laravel&ThinkPHP对比

TP框架:

ThinkPhp简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。

Laravel框架:

Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。

区别:

  • 1、提交数据的方式,Laravel在提交表单时需要在表单中加入csrf_field加大括号来防止跨域攻击,而TP不会。

  • 2、路由,Laravel必须先定义,再使用,路由文件为routes.php,TP在配置文件中开启路由后,路由格式是:’路由表达式’ => ‘路由地址和参数’(使用路由的前提是URL支持phthinfo并且开启路由),路由可以使URL更符合SEO。

  • 3、中间件,Laravel的中间件,中间件就是HTTP请求到达之前经过的层,通过中间件我们可以验证用户是否登录等一些通用操作。

  • 4、操作数据库方式,都可以使用实例化(建立相对应的模型类)和DB:table(‘表名’)来操作数据库,使用原生查询时不太相同,Laravel使用Db::操作(‘原生sql’),TP使用Db::query(‘原生sql’);

  • 5、Laravel升级十分简易,而TP大版本的升级要重构代码。

第一

主要区别:(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是不会随着文件一起提交到服务器的”;

坚持原创技术分享,您的支持将鼓励我继续创作!