Laravel 在请求须要先定义路由,Tp5能够不定义,有pathinfo路由便可访问。
Laravel 在请求以前会有中间件, Tp5会有前置操做和钩子。php
1.0 Laravel 在表单提交的时候会有csrf 跨站请求伪造验证,Tp5则没有。
2.0 Laravel 在请求须要先定义路由,Tp5能够不定义,有pathinfo路由便可访问。
3.0 Laravel 在请求以前会有中间件, Tp5会有前置操做和钩子。html
参考:Laravel 和 Tp5的一些区别 - 简书
https://www.jianshu.com/p/03e4ac7e3fa3前端
一、TP框架:
ThinkPhp简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。
二、Laravel框架:
Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。
我的感受TP5和Laravel框架的区别已经很小了,相较于TP3,TP5支持了composer安装,配置文件位置变化,支持了闭包函数,验证方式也跟Lavarel类似,数据返回方面也可使用return进行数据返回。
三、区别
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大版本的升级要重构代码。nginx
Laravel最大的强项是充分运用了PHP面向对象的特行和软件工程的思想,是一个几近解耦的框架(它引入了各类各样的设计模式,如IOC模式、以来注入等)。laravel
参考:laravel与TP的区别 - Rerise的博客 - CSDN博客
https://blog.csdn.net/jiangnanqbey/article/details/80860156web
一、Tp
ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤为注重开发体验和易用性,而且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。 3.2版本的服务器环境要求以下: PHP5.3以上版本
二、Laravel
Laravel是一个简单优雅的PHP Web开发框架,能够将开发者从意大利面条式的代码中解放出来,经过简单、高雅、表达式语法开发出很棒的Web应用,Laravel拥有更富有表现力的语法、高质量的文档、丰富的扩展包,被称为“巨匠级PHP开发框架”。 laravel框架的安装知足条件:
PHP版本 >= 5.5.9
PHP扩展:OpenSSL
PHP扩展:PDO
PHP扩展:Mbstring
PHP扩展:Tokenizer
Laravel须要依赖 Composer管理,必须首先安装Composer。
2、tp与laravel的目录结构
一、TP目录结构:
├─index.php 入口文件
├─README.md README文件
├─Application 应用目录
├─Public 资源文件目录
└─ThinkPHP 框架目录
核心代码目录:
├─ThinkPHP 框架系统目录(能够部署在非web目录下面)
│├─Common 核心公共函数目录
│├─Conf 核心配置目录
│├─Lang 核心语言包目录
│├─Library 框架类库目录
││ ├─Think 核心Think类库包目录
││ ├─Behavior 行为类库目录
││ ├─Org Org类库包目录
││ ├─Vendor 第三方类库目录
││ ├─ ... 更多类库目录
│├─Mode 框架应用模式目录
│├─Tpl 系统模板目录
│├─LICENSE.txt 框架受权协议文件
│├─logo.png 框架LOGO文件
│├─README.txt 框架README文件
│└─index.php 框架入口文件
① C层放在application/home/controller中,M层在application/home/model,视图放在application/home/view中。
② Tp里面使用的模板引擎是smarty,因此传值以及调用模板为assign和display。
③ 实现了模板输出的替换和过滤,如__APP__,__MODULE__,__URL__,__PUBLIC__等
④ 自带一些缓存的方法,如S (数据缓存) F(快速缓存) cache(查询缓存)以及静态缓存
⑤ 对网站安全性有多重防御,输入过滤(I方法)、上传安全、防止XSS攻击、防止sql注入、表单合法性检测(create方法建立数据对象的时候,可使用数据的合法性检测,可使用insertFields 和 updateFiel
ds属性或者field方法)等
⑥ ThinkPHP提供了灵活的全局配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、公共配置、模块配置、调试配置和动态配置,分别讲述了在Apache、IIS、和nginx上的伪静态配置。‘⑦ thinkphp 也采用了命名空间的方法用来区分每一个文件
⑧ 在ThinkPHP中基础的模型类就是Think\Model类,该类完成了基本的CURD、ActiveRecord模式、连贯操做和统计查询,一些高级特性被封装到另外的模型扩展中。
⑨ 基础模型类的设计很是灵活,甚至能够无需进行任何模型定义,就能够进行相关数据表的ORM和CURD操做,只有在须要封装单独的业务逻辑的时候,模型类才是必须被定义的。
⑩ ThinkPHP有专门为开发过程而设置的调试模式,开启调试模式后,会牺牲必定的执行效率,但带来的方便和除错功能很是值得。
11 tp中session使用的很是灵活在任何页面都可以随意调取,不须要重复的引入,只须要开启一次session能够了。 tp中不须要反复的写路由tp框架的s ession机制在配置中文件中配置好就能够用
12 使用系统内置的I函数是避免输入数据出现安全隐患的重要手段,I函数默认的过滤方法是htmlspecialchars,若是咱们须要采用其余的方法进行安全过滤,有两种方式:
+-------------------------------------------------------------------------+
| 'DEFAULT_FILTER' => 'strip_tags'
| 'DEFAULT_FILTER' => 'strip_tags,stripslashes',
+--------------------------------------------------------------------------+
13若是你没有使用I函数进行数据过滤的话,还能够在模型的写入操做以前调用filter方法对数据进行安全过滤,
如 $this->data($data)->filter('strip_tags')->add();
二、Laravel目录:
app目录包含了应用的核心代码;
bootstrap目录包含了少量文件用于框架的启动和自动载入配置,还有一个cache文件夹用于包含框架生成的启动文件以提升性能; config目录包含了应用全部的配置文件;
database目录包含了数据迁移及填充文件,若是你喜欢的话还能够将其做为 SQLite 数据库存放目录;
public目录包含了前端控制器和资源文件(图片、JavaScript、CSS等);
resources目录包含了视图文件及原生资源文件(LESS、SASS、CoffeeScript),以及本地化文件;
storage目录包含了编译过的Blade模板、基于文件的session、文件缓存,以及其它由框架生成的文件,该文件夹被细分为成app、framework和logs子目录,app目录用于存放应用要使用的文件,framework目录用于存放框架生成的文件和缓存,最后,logs目录包含应用的日志文件;
tests目录包含自动化测试,其中已经提供了一个开箱即用的PHPUnit示例;
vendor目录是laravel的核心代码库,包含Composer依赖;
M层放在在app下面,不用再给专门的文件夹,app/Http下面有个routes.php,专门存放路由,每一个控制器里的方法必须都要有,app/Http/Controller下面放的是控制器,resources/views下面放的是模版,以.blade.php为结尾。配置数据库信息能够直接在。Env文件中修改就能够了。
①laravel框架对环境有要求,5.2版本的laravel要求php5.5.9以上,还要开一些扩展。
②在浏览器中请求的路由经过app/Http/routes.php进行解析,在进入相应的控制器方法,有get、post、any、match等一些方法③传值、调用模板return view('user.profile', ['user' => $user]);
④设置session值:默认session只能在本方法中获取,能够在app/Http/kernel.php设置。
+-------------------------------------------------------------------------+
| session(['chairs' => 7, 'instruments'=> 3]);
| session()->get('key');session()->put('key', $value);session(‘key’)
+--------------------------------------------------------------------------+
也能够用$request->session()->get()/put()设置
Laravel的session的配置文件配置在app/config/session.php中session的永久保存(在不过时范围内)Session::put('key', 'value');
Session驱动(file,cookie,database,memcached,array)
配置文件为config/session.php
默认使用文件驱动
File session数据存储在storage/framework/session目录下
Cookie session数据储存在通过加密的cookie中
Database session数据储存在数据库中
Memcached/redis session数据存储在memcached/redis中
Array session数据存储在简单地数组中,非持久化(经常使用于运行测试)
⑤在AppServiceProvider中使用share方法能够是全部模板共享数据
⑥{{ $a}}是内置的输出数据的方法,默认被转义,可使用{!!$a!!}输出本来代码而不会被转义
⑦@foreach @endforeach @if @elseif @else @endif
⑧模板继承能够在视图中使用同一个主模板,节省代码,方便管理
⑨数据库操做可使用原生sql语句也可使用查询构建器
3、Laravel与Tp的路由
一、laravel路由
laravel必须先定义路由,全部应用路由都定义在app/Http/routes.php文件中。
默认状况下,routes.php 文件包含单个路由和一个路由群组,该路由群组包含的全部路由都使用了中间件组 web,而这个中间件组为路由提供了 Session 状态和 CSRF 保护功能。
而thinkphp中开启路由:“URL_ROUTER_ON”=true;
路由规则的定义格式为: '路由表达式'=>'路由地址和参数'。 二、TP路由
要使用路由功能,前提是你的URL支持PATH_INFO并开启路由路由规则的定义格式为: '路由表达式'=>'路由地址和参数'
4、Laravel与Tp基本配置与视图以及Laravel的中间件
一、laravel视图
视图文件存放在 resources/views 目录
判断视图是否存在用 view()->exists() 在全部视图之间共享数据片断,这时候可使用视图工厂的share方法,一般,须要在服务提供者的boot 方法中调用 share 方法,你能够将其添加到 AppServiceProvider 或生成独立的服务提供者来存放它们:
二、数据显示
Blade 的 {{}} 语句已经通过 PHP 的htmlentities 函数处理以免 XSS 攻击。 Blade 的 @include 指令容许简单的在一个视图中包含另外一个 Blade视图,能够传递参数到被包含的视图@include('view.name', ['some' => 'data'])
三、Tp视图
赋值assign调用页面display
在当前模版文件中包含其余的模版文件使用include标签,Include标签支持在包含文件的同时传入参数
四、laravel基本配置
Laravel框架的全部配置文件都存放在 config 目录下。
.env中的全部配置及其值被载入到 PHP 超全局变量 $_ENV 中
五、Tp配置::
公共配置文件(默认位于Application/Common/Conf/config.php)。获取已经设置的据库链接 参数值:C('参数名称')
六、laravel的中间件
Laravel框架自带了一些中间件,包括维护模式、认证、CSRF保护中间件等。全部的中间件都位于app/Http/Middleware 目录下。
能够将中间件看作 HTTP 请求到达目标动做以前必须通过的“层”,每一层都会检查请求而且能够彻底拒绝它。分配中间件到路由
首先应该在 app/Http/Kernel.php 文件中分配给该中间件一个简写的 key,默认状况下,该类的 $routeMiddleware 属性包含了 Laravel 内置的入口中间件,添加你本身的中间件只须要将其追加到后面并为其分配一个 key:
中间件在 HTTP Kernel 中被定义后,能够在路由选项数组中使用 $middleware 键来指定该中间件: Route::get('admin/profile', ['middleware' => 'auth', function (){ // }]);
5、Laravel与Tp数据库
一、laravel数据库
Laravel 支持四种类型的数据库系统:MySQLPostgres SQLite SQL Server 能够配置读写分离
运行原生 SQL 查询
DB方法:select, update,insert, delete, 和statement。数据库事务全部的填充类都位于database/seeds目录
在run方法中,能够插入任何你想插入数据库的数据
可使用 Artisan 命令db:seed来填充数据库
二、Tp数据库
目前的数据库包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持。
6、 Laravel与Tp的防范机制面试
参考:TP与laravel简介 - 少昊 鹰 的 IT博客 - CSDN博客
https://blog.csdn.net/qq_33620483/article/details/78062502redis