TP与laravel简介

来源:互联网 发布:剑三mmd花萝捏脸数据 编辑:程序博客网 时间:2024/05/21 04:18

TP与laravel简介

 

1、Tp

 

ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。 3.2版本的服务器环境要求如下: PHP5.3以上版本

 

2、Laravel

 

Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的Web应用,Laravel拥有更富有表现力的语法、高质量的文档、丰富的扩展包,被称为“巨匠级PHP开发框架”。 laravel框架的安装满足条件:

 

PHP版本 >= 5.5.9

 

PHP扩展:OpenSSL

 

PHP扩展:PDO

 

PHP扩展:Mbstring

 

PHP扩展:Tokenizer

 

Laravel需要依赖 Composer管理,必须首先安装Composer。

 

二、tp与laravel的目录结构

 

1、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();

 

  2、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语句也可以使用查询构建器

 

三、Laravel与Tp的路由

 

1、laravel路由

 

laravel必须先定义路由,所有应用路由都定义在app/Http/routes.php文件中。

 

默认情况下,routes.php 文件包含单个路由和一个路由群组,该路由群组包含的所有路由都使用了中间件组 web,而这个中间件组为路由提供了 Session 状态和 CSRF 保护功能。

 

而thinkphp中开启路由:“URL_ROUTER_ON”=true;

 

路由规则的定义格式为: '路由表达式'=>'路由地址和参数'。 2、TP路由

 

要使用路由功能,前提是你的URL支持PATH_INFO并开启路由路由规则的定义格式为: '路由表达式'=>'路由地址和参数'

 

四、Laravel与Tp基本配置与视图以及Laravel的中间件

 

1、laravel视图

 

视图文件存放在 resources/views 目录

判断视图是否存在用 view()->exists() 在所有视图之间共享数据片段,这时候可以使用视图工厂的share方法,通常,需要在服务提供者的boot 方法中调用 share 方法,你可以将其添加到 AppServiceProvider 或生成独立的服务提供者来存放它们:

 

2、数据显示

 

Blade 的 {{}} 语句已经经过 PHP 的htmlentities 函数处理以避免 XSS 攻击。 Blade 的 @include 指令允许简单的在一个视图中包含另一个 Blade视图,可以传递参数到被包含的视图@include('view.name', ['some' => 'data'])

 

3、Tp视图

 

赋值assign调用页面display

 

在当前模版文件中包含其他的模版文件使用include标签,Include标签支持在包含文件的同时传入参数

 

4、laravel基本配置

 

Laravel框架的所有配置文件都存放在 config 目录下。

 

.env中的所有配置及其值被载入到 PHP 超全局变量 $_ENV 中

 

5、Tp配置::

 

公共配置文件(默认位于Application/Common/Conf/config.php)。获取已经设置的据库连接 参数值:C('参数名称')

 

6、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 (){ // }]);

 

五、Laravel与Tp数据库

 

1、laravel数据库

Laravel 支持四种类型的数据库系统:MySQLPostgres SQLite SQL Server 可以配置读写分离

 

运行原生 SQL 查询

DB方法:select, update,insert, delete, 和statement。数据库事务所有的填充类都位于database/seeds目录

 

在run方法中,可以插入任何你想插入数据库的数据

 

可以使用 Artisan 命令db:seed来填充数据库

2、Tp数据库

 

目前的数据库包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持。

六、 Laravel与Tp的防范机制