Laravel和Thinkphp有什么区别,哪个框架好用

简介: Laravel和Thinkphp有什么区别,哪个框架好用

Laravel和Thinkphp这两个php框架对于php程序员都不陌生,新手可能对Thinkphp比较熟,也是国内比较出名的开源框架,更高级的Laravel一般有点经验的才使用。


TP框架:



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


Laravel框架:



Lavavel一直秉承着优雅的原则,很好的支持了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哪个框架好用



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


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


目录
相关文章
|
机器学习/深度学习 数据采集 算法
深度学习之路径优化与车辆调度
基于深度学习的路径优化与车辆调度技术在交通管理、物流配送、公共交通、共享出行等领域具有重要应用价值。这些技术利用深度学习模型处理复杂的交通数据、实时信息以及用户需求,旨在提高运输效率、降低成本、减少拥堵并提升服务质量。
768 0
|
11月前
|
机器学习/深度学习 人工智能 数据处理
OpenBioMed:开源生物医学AI革命!20+工具链破解药物研发「死亡谷」
OpenBioMed 是清华大学智能产业研究院(AIR)和水木分子共同推出的开源平台,专注于 AI 驱动的生物医学研究,提供多模态数据处理、丰富的预训练模型和多样化的计算工具,助力药物研发、精准医疗和多模态理解。
564 1
OpenBioMed:开源生物医学AI革命!20+工具链破解药物研发「死亡谷」
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
1125 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
Java Go
Golang深入浅出之-Go语言指针面试必知:理解与使用指针
【4月更文挑战第21天】Go语言中的指针允许直接操作内存,常用于高效数据共享和传递。本文介绍了指针的基础知识,如声明、初始化和解引用,以及作为函数参数使用。此外,讨论了`new()`与`make()`的区别和内存逃逸分析。在结构体上下文中,指针用于减少复制开销和直接修改对象。理解指针与内存管理、结构体的关系及常见易错点,对于面试和编写高性能Go代码至关重要。
641 2
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
592 6
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
1545 1
|
监控 Java 测试技术
Java一分钟之-Vert.x:轻量级事件驱动框架
【6月更文挑战第11天】Vert.x是一个轻量级的Java事件驱动框架,用于构建高性能微服务和响应式应用。它采用多-reactor线程模型,支持异步非阻塞IO,提供事件驱动、多语言支持、轻量级特性和模块化组件生态。本文关注Java,讨论了Vert.x中的常见问题,如阻塞事件循环、异常处理和资源泄露,并提供了解决方案。理解异步编程模型,利用Vert.x生态和进行有效监控是避免陷阱的关键。通过实践,开发者能更好地掌握Vert.x并构建高效应用。
649 1
|
安全 数据处理 开发者
Boost序列化与Protobuf比较:深入分析 (Boost Serialization vs. Protobuf: An In-depth Comparison)...
Boost序列化与Protobuf比较:深入分析 (Boost Serialization vs. Protobuf: An In-depth Comparison)...
563 1
|
文字识别 前端开发 JavaScript
Star33.1k!推荐一个基于网页的OCR(光学字符识别)引擎库
想要在前端解决图像识别的兄弟,可以到 Github 上下载Tesseract.js库,安装和相关学习文档都能下载到,实在获取不到的兄弟找V哥发给你,假期第二天,出去放松的同时也可以看看 V 哥的文章,祝大家玩得开心。
557 0
|
缓存 负载均衡 安全
每天一技:全面了解CC攻击和防范策略
CC攻击是一种模拟真实用户请求,导致服务器资源耗尽的网络攻击。攻击者利用工具生成木马,控制大量“肉鸡”对目标网站发起恶意请求,使服务器CPU过载,网站无法正常服务。特点是请求有效、IP分散、数据包真实、针对网页。常见类型包括直接攻击、肉鸡攻击、僵尸攻击和代理攻击。判断CC攻击可通过观察CPU usage飙升和系统日志异常。大型网站如某度、Google因代码规范、硬件配置高、缓存策略、严格防火墙和负载均衡等技术能有效防御。防御措施包括IP封禁、人机验证、静态化页面、更改Web端口、日志分析等,或使用SCDN产品提供全面防护,包括Web攻击防护、DDoS防护、合规性保障、流量管理和安全可视化功能。

热门文章

最新文章