laravel与thinkphp之间的区别与优缺点


Posted in PHP onMarch 02, 2021

Laravel框架:

Laravel是当今最熟练,流行和广泛使用的开源框架之一,一直秉承着优雅的原则,完美支持**composer**,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。


问题描述:

1、渲染模版方式的不同

在Laravel框架里,使用return view()来渲染模版;而ThinkPHP里则使用了$this->display()的方式渲染模版。

2、在实际开发中我们常常遇到这样的问题,就是开发地点不固定。

这就造成了我们需要频繁的更改数据库配置,给开发工作造成了麻烦。TP依然没有避免这个”灾难”,在laravel框架中,.env环境文件的出现解决了这个麻烦。我们只需要在不同的工作地点配置好.env文件就不避再进行配置,因为无论是git还是svn,“.env是不会随着文件一起提交到服务器的”。

3、Laravel框架提供了大量的闭包

作为菜鸟的我目前只使用了use方法,即如何在函数内部使用外层变量。

4、post传值中注意点不同

在Laravel框架里,由于其考虑到了跨站攻击,所以如果使用form表单以post方式进行传值时,如果不再form表单中加入{{csrf_field()}}则会报出TokenMethodnotfound的语法错误,而TP框架则需要自己手动完成防止跨站攻击的代码。

5、条件判断语句书写方式的差异

Laravel框架里if else判断语句和foreach语句,书写时必须以@if开头,以@endif结尾。如果没有则报语法错误,@foreach @endforeach同理;而TP框架则和PHP语法规则使用方式一致,直接用if esle语句判断和foreach循环遍历。

6、Laravel里内置了大量的方法供开发者使用

在实际应用中更接近于”让对象完成一切”的开发思想,比如在后台表单验证的时候,Laravel内置了大量的验证方法。例如对用户名的验证:我们可以使用validate方法里'username'=>'required'(不能为空)|alpha_dash(必须数字字母下划线)|between:6,18(在多少位数之间);还内置了例如email;same:字段名;diff:字段名等大量的方法极大的提高了开发速度。

7、加密方式

在TP框架中,我们对用户名密码进行加密时使用md5();的方式进行加密。但md5的缺点在于其可以逆向破解,而且在同等规则下同样的密码md5加密出的字符串是有可能出现相同的,这就降低其安全性。但在Laravel框架中内置了”哈希”Hash加密单向加密方法,且同样的参数加密出的字符串是绝对不会出现相同的情况,这就提高了安全性。

8、建表

Laravel在数据库建表上有自己独立内置的结构,可以完全不用借助原生SQL语句或者SQLyogEnt、Navicat这样的建表工具进行数据库的建立,增删改查和数据交互。我想这可能是它牢牢占据NO.1的一大亮点,在ThinkPHP中则需要我们借助SQL语句或者建表工具去逐步完善数据。

8.1、首先我们需要建立模型:我用的是gitbash。gitbash是Windows下的命令工具,基于msys GNU环境,有git分布式版本控制工具,主要应用于git。但是在Laravel里也可以直接使用:php artisan make:model Models/GoodsModel -m 完成模型的创建和建表结构的创建(/database/migrations)。

8.2、向goods数据表填充数据,要注意数据的类型是严格区分的,并且一定要加。添加完后使用php artisan migrate命令完成表的创建。

Schema::create(‘goods', function (Blueprint $table) {
$table->increments(‘id')->comment(‘商品主键');

$table->string(‘title')->comment(‘商品的标题');

8.3、假设某个字段不符合要求或者需要添加字段怎么办?无须担心,从github中pull下项目后在数据表里直接修改,只需要用:

php artisan migrate:refresh

9、ORM

在介绍建表时已经使用了创建模型的命令:

php artisan make:model XXX;

Laravel里模型是对面向对象开发思想最好的诠释,让对象帮我们完成需求。

摘自5.1手册:(Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库进行交互。每个数据库表都有一个对应的「模型」可用来跟数据表进行交互。你可以通过模型查找数据表内的数据,以及将记录添加到数据表中。)

本人在实际使用中也实实在在的感受到了通过创造模型对数据表操作带来的便利,譬如:批量赋值,跨表查询,删除模型和软删除,模型关联,当然这些在TP框架中也可以利用模型实现。这一点属于仁者见仁智者见智,根据个人喜好而定。

10、session的用法

10.1、ThinkPHP对Session操作进行了封装,并且无需引入就可以使用,Session的启动会在应用初始化的时候自动执行,所以无需手动使用Session::start() 来启动Session。

使用Session类操作和普通方式调用$_SESSION来操作并没有本质不同,只是Session类很多参数可以根据项目配置来灵活设置,最常用的操作方法示例:

// 检测Session变量是否存在:Session::is_set(‘name');

// 给Session变量赋值:Session::set(‘name','value');

// 获取Session变量:Session::get(‘name');

10.2、Laravel中Session的常用方法:

$request->session()->get(‘key');//获取session里的某个键名

$request->session()->set(‘key','default');//设定一个默认值,当指定键名不存在便返回默认值

$request->session()->all();//返回所有数据

session(‘k'=>$v);//写入session保存数据

以及闪存数据session()->flash()和保留特定数据->keep([”,”]);

也可以自定义session驱动。


laravel和thinkphp:

laravel和thinkphp哪个框架好用

thinkphp,采用mvc思想开发,它活动范围主要是国内,而且完全免费开源,学习资料非常丰富,对于新手来说是学习php框架最佳的选择,主要还是都是中文文档。从5.0版本开始,号称为API开发而设计的高性能框架。配置开发也是非常简单,一般下载框架就可以直接开发,开发代码风格也符合国人思想,所以简单,快捷,适合新手的php框架。

Laravel框架,为 WEB 艺术家创造的 PHP 框架,同时也是目前API开发最好的高级php框架。我们都知道php主要是网站web开发,Laravel框架开发优雅,简单的代码,而且Laravel是为人而设计框架,开发的思维比较合适中级程序员思路,所以有经验的php程序员比较青睐Laravel框架。新手为什么不强烈推荐呢?主要是Laravel框架是一个国际的框架,很多都是英文文档,虽然还有中文文档,但是资料有限,很多有用的资料都不是免费的,可以说是Laravel框架是半开源代码,新手如果没有人带,可能需要学习精力是有限的。


到此这篇关于laravel与thinkphp之间的区别与优缺点的文章就介绍到这了,更多相关laravel与thinkphp框架比较内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
php empty函数 使用说明
Aug 10 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 PHP
php中array_fill函数的实例用法
Mar 02 #PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 #PHP
php框架知识点的整理和补充
Mar 01 #PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 #PHP
PHP加MySQL消息队列深入理解
Feb 27 #PHP
php慢查询日志和错误日志使用详解
Feb 27 #PHP
php的单例模式及应用场景详解
Feb 27 #PHP
You might like
Zend的AutoLoad机制介绍
2012/09/27 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
Python while循环使用else语句代码实例
2020/02/07 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
一道输出判断型Java面试题
2014/10/01 面试题
《小猫刮胡子》教学反思
2014/02/21 职场文书
社区两委对照检查材料
2014/08/23 职场文书
党员演讲稿
2014/09/04 职场文书
车辆转让协议书
2014/09/24 职场文书
刘公岛导游词
2015/02/05 职场文书
培养联系人考察意见
2015/06/01 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫