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 相关文章推荐
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
php简单实现数组分页的方法
Apr 30 PHP
CI框架中redis缓存相关操作文件示例代码
May 17 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 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
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
img标签中onerror用法
2009/08/13 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
React组件的三种写法总结
2017/01/12 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
vue写一个组件
2018/04/09 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python 操作MySQL详解及实例
2017/04/30 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python异常触发及自定义异常类解析
2019/08/06 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
keras 权重保存和权重载入方式
2020/05/21 Python
什么是Python中的顺序表
2020/06/02 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
车辆年检委托书范本
2014/10/14 职场文书
群众路线调研报告范文
2014/11/03 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers