Bootstrap

【tp】【laravel】thinkphp和laravel的区别(不是纯复制粘贴)

thinkphp和laravel的区别:

具体来说是tp5.1和laravel5.2的区别

如果很着急可以只看文章目录就是总结啦↓↓↓↓↓↓↓

1.laravel自带很多功能,tp更轻量级

  • tp为1.64 MB
  • laravel是26.2 MB

原因:
1.laravel框架中的vendor目录为25.4 MB,主要存放composer下载的类库比如:验证类、邮件类、上传类。
2.laravel框架自带了很多功能,比如中间件、数据迁移和数据填充、消息队列、事件等

2.laravel有自带Artisan命令工具,tp没有

Artisan 是Laravel中自带的命令行工具,可以使用它快捷生成新控制器、模型、中间件、jobs等。

比如:我想生成一个新的控制器HomeController

  • 如果用tp,需要手动创建一个类文件;
  • 如果用laravel,只需要在项目路径下运行php artisan make:controller HomeController

3.laravel控制器方法设置对应路由才可以访问,tp不需要

比如,如果想访问Test控制器中的helloWorld方法:

  • tp可以直接按照既定的规则进行访问
http://域名/模块名/控制器名/方法名 ===> http://abaaba/index/test/helloWorld
  • laravel中必须在 routes.php 中设置该方法对应路由
Route::any('/hw','TestController@helloWorld');

4.Laravel要求post、put请求必须在表单中携带csrf_token,tp不需要

比如,开发者想在方法中获取post、表单数据:

  • tp的方法可以被post方式正常请求
  • laravel的方法被post方式请求时,会检测表单中是否有"_token"的参数值,而且这个值要和服务器Session里储存的一致,不一致就抛出异常TokenMismatchException。

laravel的目的为了防止CSRF攻击,如何操作请点连接(XSS的反射型攻击或蠕虫)
附上我的不太准确的理解出的原理图:
在这里插入图片描述

5.laravel的配置项基本在.env文件,tp配置项分布在config目录中

比如我们要配置数据库的配置项(host、用户名、密码):

  • laravel就修改该.env文件的DB_HOST、DB_USERNAME、DB_PASSWORD的值
  • tp就修改\config\database.php的配置项的值

所以laravel这点相对更方便,几乎很多重要的配置项都在.env文件里,假如有一天我们要在新电脑上拉取公司项目代码进行工作,拉取后只需要修改.env文件的配置项即可

6.控制器中渲染模板方式不同

  • laravel使用return view()来渲染模版;
  • tp使用$this->fetch()的方式渲染模版。

7.模板里使用条件判断、循环语句书写方式不同

比如,我想在模板中使用if+elseif+else:

面试能说完这几项应该也差不多了。。。(心虚~ o( ̄▽ ̄)o

;