think url root 模板上直接获取url参数

seosqwseo4个月前 (09-17)测评日记37

一、本人新手,刚安装thinkphp,怎么不成功

快速入门(一):基础

简介

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

本快速入门教程针对3.2.3新版本制作,虽然大部分特性3.2版本同样存在,但是强烈建议你使用3.2.3版本来学习本入门教程。

**

ThinkPHP新版本可以在官方网站()**。

新的3.2.3版本**地址:。

如果你希望保持新的更新,可以通过github获取当前新的版本(完整版)。

Git获取地址列表(你可以选择一个快的地址):

Github:

Oschina:

Code:

Coding:

目录结构

把**后的压缩文件解压到你的WEB目录(或者任何子目录都可以),框架的目录结构为:

wwwWEB部署目录(或者子目录)

├─index.php入口文件

├─README.mdREADME文件

├─composer.jsonComposer定义文件

├─Application应用目录

├─Public资源文件目录

└─ThinkPHP框架目录

3.2版本开始相比之前的版本自带了一个完整的应用目录结构(Application)和默认的应用入口文件(index.php),开发人员可以在这个基础之上灵活调整(目录名称和位置)。其中,Application和Public目录下面都是空的,而README.md和composer.josn文件仅用于说明,实际部署的时候可以删除。

其中,ThinkPHP为框架核心目录,其目录结构如下:

├─ThinkPHP框架系统目录(可以部署在非web目录下面)

│├─Common核心公共函数目录

│├─Conf核心配置目录

│├─Lang核心语言包目录

│├─Library框架类库目录

││├─Think核心Think类库包目录

││├─Behavior行为类库目录

││├─OrgOrg类库包目录

││├─Vendor第三方类库目录

││├─...更多类库目录

│├─Mode框架应用模式目录

│├─Tpl系统模板目录

│├─LICENSE.txt框架授权协议文件

│├─logo.png框架LOGO文件

│├─README.txt框架README文件

│└─index.php框架入口文件

框架核心目录的结构无需改变,但框架的目录名称(ThinkPHP)可以在应用入口文件中随意更改。

入口文件

在开始之前,你需要一个Web服务器和PHP运行环境,如果你暂时还没有,我们推荐使用集成开发环境WAMPServer(是一个集成了Apache、PHP和MySQL的开发套件,而且支持多个PHP版本、MySQL版本和Apache版本的切换)来使用ThinkPHP进行本地开发和测试。

3.2版本开始框架自带了一个应用入口文件,默认内容如下:

define('APP_PATH','./Application/');require'./ThinkPHP/ThinkPHP.php';

这段代码的作用就是定义应用目录和加载ThinkPHP框架的入口文件,这是所有基于ThinkPHP开发应用的第一步。

然后,在浏览器中访问运行后我们会看到欢迎页面:

当你看到这个欢迎页面的时候,系统已经在Application目录下面自动生成了公共模块Common、默认模块Home和Runtime运行时目录,如下所示:

Application├─Common应用公共模块

│├─Common应用公共函数目录

│└─Conf应用公共配置文件目录

├─Home默认生成的Home模块

│├─Conf模块配置文件目录

│├─Common模块函数公共目录

│├─Controller模块控制器目录

│├─Model模块模型目录

│└─View模块视图文件目录

├─Runtime运行时目录

│├─Cache模版缓存目录

│├─Data数据目录

│├─Logs日志目录

│└─Temp缓存目录模块设计

3.2版本采用模块化的设计架构,下面是一个典型的模块目录结构,每个模块可以方便的卸载和部署,并且支持公共模块(Runtime目录非模块目录)。

Application默认应用目录(可以设置)

├─Common公共模块(不能直接访问)

├─Home前台模块

├─Admin后台模块

├─...其他更多模块

├─Runtime默认运行时目录(可以设置)每个模块是相对独立的,其目录结构如下:

├─Module模块目录

│├─Conf配置文件目录

│├─Common公共函数目录

│├─Controller控制器目录

│├─Model模型目录

│├─Logic逻辑目录(可选)

│├─Service服务目录(可选)

│...更多分层目录可选

│└─View视图目录

由于采用多层的MVC机制,除了Conf和Common目录外,每个模块下面的目录结构可以根据需要灵活设置和添加,所以并不拘泥于上面展现的目录。

如果我要添加新的模块,有没有快速生成模块目录结构的办法呢?只需要在入口文件中添加如下定义(假设要生成Admin模块):

define('APP_PATH','./Application/');//绑定入口文件到Admin模块访问define('BIND_MODULE','Admin');require'./ThinkPHP/ThinkPHP.php';

BIND_MODULE常量定义表示绑定入口文件到某个模块,由于并不存在Admin模块,所以会在第一次访问的时候自动生成。重新访问入口文件后,就会再次看到欢迎页面,这个时候在Application下面已经自动生成了Admin模块及其目录结构。

注意:生成以后,你需要删除(或者注释掉)刚才添加的那段常量定义才能正常访问Home模块,否则就只能访问Admin模块(因为应用入口中已经绑定了Admin模块)。

define('APP_PATH','./Application/');//注释掉绑定模块的定义// define('BIND_MODULE','Admin');require'./ThinkPHP/ThinkPHP.php';

有些情况下,我们需要更改应用目录、运行时目录和框架的位置,那么可以修改入口文件如下:

//定义应用目录define('APP_PATH','./Apps/');

//定义运行时目录define('RUNTIME_PATH','./Runtime/');

//更名框架目录名称,并载入框架入口文件require'./Think/ThinkPHP.php';

这样终的应用目录结构如下:

www WEB部署目录(或者子目录)

├─index.php应用入口文件

├─Apps应用目录

├─Public资源文件目录

├─Runtime运行时目录

└─Think框架目录

调试模式

ThinkPHP支持调试模式,默认情况下是运行在部署模式下面。部署模式下面性能优先,并且尽可能少地抛出错误信息,调试模式则以除错方便优先,关闭任何缓存,而且尽可能多的抛出错误信息,所以对性能有一定的影响。

部署模式采用了项目编译机制,第一次运行会对核心和项目相关文件进行编译缓存,由于编译后会影响开发过程中对配置文件、函数文件和数据库修改的生效(除非你修改后手动清空Runtime下面的缓存文件)。因此为了避免以上问题,我们强烈建议新手在使用ThinkPHP开发的过程中使用调试模式,这样可以更好的获取错误提示和避免一些不必要的问题和烦恼。

开启调试模式很简单,我们只需要在入口文件的开头加上一行常量定义代码:

define('APP_DEBUG',true);//开启调试模式

define('APP_PATH','./Application/');

require'./ThinkPHP/ThinkPHP.php';

开发完成后,我们实际进行项目部署的时候,删除这行常量定义代码即可,或者改成:

define('APP_DEBUG',false);//关闭调试模式

define('APP_PATH','./Application/');

require'./ThinkPHP/ThinkPHP.php';

为了安全考虑,避免泄露你的服务器WEB目录信息等资料,一定记得正式部署的时候关闭调试模式。

配置

每个应用模块都有独立的配置文件(位于模块目录的Conf/config.php),配置文件的定义格式支持PHP/JSON/YAML/INI/XML等方式,默认采用PHP数组定义,例如:

//配置文件

returnarray(

'配置参数'=>'配置值',//更多配置参数

//...);

如果你需要为各个模块定义公共的配置文件,可以在公共模块中定义(通常位于Common/Conf/config.php),定义格式是一样。

一旦有需要,我们就可以在配置文件中添加相关配置项目。通常我们提到的添加配置项目,就是指在项目配置文件中添加:

'配置参数'=>'配置值',

配置值可以支持包括字符串、数字、布尔值和数组在内的数据,通常我们建议配置参数均使用大写定义。

如果有需要,我们还可以为项目定义其他类型的配置文件,如果要使用其他格式的配置文件,可以在入口文件中定义CONF_EXT常量即可,例如:

define('CONF_EXT','.ini');

这样,模块的配置文件就变成了Conf/config.ini,定义格式如下:

DEFAULT_MODULE= Index;默认模块URL_MODEL= 2;URL模式

更多的配置定义请参考后续的内容。

控制器

需要为每个控制器定义一个控制器类,控制器类的命名规范是:

控制器名+Controller.class.php(模块名采用驼峰法并且首字母大写)

系统的默认控制器是Index,对应的控制器就是模块目录下面的Controller/IndexController.class.php,类名和文件名一致。默认*作是index,也就是控制器的一个public方法。初次生成项目目录结构的时候,系统已经默认生成了一个默认控制器(就是之前看到的欢迎页面),我们把index方法改成下面的代码:

<?php

namespaceHome\Controller;

useThink\Controller;

classIndexControllerextendsController

{

publicfunctionindex(){

echo'hello,thinkphp!';

}

}

再次访问入口文件的时候,在浏览器中看到默认的欢迎页面已经改成如下输出:

hello,thinkphp!

可以为*作方法定义参数,例如:

<?php

namespaceHome\Controller;

useThink\Controller;

classIndexControllerextendsController{

publicfunctionhello($name='thinkphp'){

echo'hello,'.$name.'!';

}

}

当我们带name参数访问入口文件地址(例如)的时候,在浏览器中可以看到如下输出:

hello,baby!

一个模块可以包括多个*作方法,但如果你的*作方法是protected或者private类型的话,是无法直接通过URL访问到该*作的。

我们修改Index控制器类的方法如下:

<?php

namespaceHome\Controller;

useThink\Controller;

classIndexControllerextendsController{

publicfunctionhello(){

echo'hello,thinkphp!';

}

publicfunctiontest(){

echo'这是一个测试方法!';

}

protectedfunctionhello2(){

echo'只是protected方法!';

}

privatefunctionhello3(){

echo'这是private方法!';

}

}

当我们访问hello2和hello3*作方法后的结果都会显示非法*作:

URL请求

ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块、控制器和*作,下面是一个标准的URL访问格式:

模块/控制器/*作

如果我们直接访问入口文件的话,由于URL中没有模块、控制器和*作,因此系统会访问默认模块(Home)下面的默认控制器(Index)的默认*作(index),因此下面的访问是等效的:

这种URL模式就是系统默认的PATHINFO模式,不同的URL模式获取模块和*作的方法不同,ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式。

1普通模式

普通模式也就是使用传统的GET传参方式来指定当前访问的模块、控制器和*作,例如:

m参数表示模块,c表示控制器,a表示*作(当然,这些参数名是可以配置的),后面的表示其他GET参数。

默认值可以不传,因此下面的URL访问是和上面的等效:

2 PATHINFO模式

PATHINFO模式是系统的默认URL模式,提供了好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。

对应上面的URL模式,PATHINFO模式下面的URL访问地址是:

PATHINFO地址的前三个参数分别表示模块/控制器/*作。

PATHINFO模式下面,也可以用普通模式的参数方式传入参数,例如:

PATHINFO模式下面,URL参数分隔符是可定制的,例如,通过下面的配置:

'URL_PATHINFO_DEPR'=>'-',//更改PATHINFO参数分隔符

我们可以支持下面的URL访问:

3 REWRITE模式

REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。

如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:

<IfModule mod_rewrite.c>RewriteEngine onRewriteCond%{REQUEST_FILENAME}!-dRewriteCond%{REQUEST_FILENAME}!-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule>

接下来就可以使用下面的URL地址访问了

4兼容模式

兼容模式是用于不支持PATHINFO的特殊环境,URL地址是:

兼容模式配合Web服务器重写规则的定义,可以达到和REWRITE模式一样的URL效果。

视图

ThinkPHP内置了一个编译型模板引擎,也支持原生的PHP模板,并且还提供了包括Smarty在内的模板引擎驱动。和Smarty不同,ThinkPHP在渲染模板的时候如果不指定模板,则会采用系统默认的定位规则,其定义规范默认是模块目录下面的View/控制器名/*作名.html,所以,Index模块的hello*作的默认模板文件位于Home模块目录下面的View/Index/hello.html,我们添加模板内容如下:

<html><head><title>hello{$name}</title></head><body>

hello,{$name}!</body></html>

要输出视图,必须在控制器方法中进行模板渲染输出*作,例如:

<?php

namespaceHome\Controller;

useThink\Controller;

classIndexControllerextendsController{

publicfunctionhello($name='thinkphp'){

$this->assign('name',$name);

$this->display();

}

}

display方法中我们没有指定任何模板,所以按照系统默认的规则输出了Index/hello.html模板文件。

接下来,我们在浏览器访问输出:

hello,thinkphp!

读取数据

在开始之前,我们首先在数据库thinkphp中创建一个think_data数据表(以mysql数据库为例):

CREATETABLEIFNOTEXISTS`think_data`(

`id`int(8)unsignedNOTNULLAUTO_INCREMENT,

`data`varchar(255)NOTNULL,

PRIMARYKEY(`id`)

)ENGINE=MyISAMDEFAULTCHARSET=utf8;

INSERTINTO`think_data`(`id`,`data`)VALUES

(1,'thinkphp'),

(2,'php'),

(3,'framework');

如果我们需要读取数据库中的数据,就需要在模块配置文件中添加数据库连接信息如下:

//添加数据库配置信息'DB_TYPE'=>'mysql',//数据库类型'DB_HOST'=>'127.0.0.1',//服务器地址'DB_NAME'=>'thinkphp',//数据库名'DB_USER'=>'root',//用户名'DB_PWD'=>'',//密码'DB_PORT'=>3306,//端口'DB_PREFIX'=>'think_',//数据库表前缀'DB_CHARSET'=>'utf8',//数据库字符集

接下来,我们修改下控制器方法,添加读取数据的代码:

namespaceHome\Controller;

useThink\Controller;

classIndexControllerextendsController{

publicfunctionindex(){

$Data=M('Data');//实例化Data数据模型

$result=$Data->find(1);

$this->assign('result',$result);

$this->display();

}

}

这里用到了M函数,是ThinkPHP内置的实例化模型的方法,而且用M方法实例化模型不需要创建对应的模型类,你可以理解为M方法是直接在*作底层的Model类,而Model类具备基本的CURD*作方法。

M('Data')实例化后,就可以对think_data数据表(think_是我们在项目配置文件中定义的数据表前缀)进行*作(包括CURD)了,M函数的用法还有很多,我们以后会深入了解。

定义好控制器后,我们修改模板文件,添加数据输出标签如下:

<html><head><title></title></head><body>{$result.id}--{$result.data}</body></html>

模板标签的用法和Smarty类似,就是用于输出数据的字段,这里就表示输出think_data表的id和data字段的值。

我们访问会输出:

1--thinkphp

如果发生错误,检查你是否开启了调试模式或者清空Runtime目录下面的缓存文件。

如果你看到了上面的输出结果,那么恭喜你已经拿到了入门ThinkPHP的钥匙!

二、thinkphp5***0***模板上直接获取url参数

//调用Request对象的get方法传入参数为id

{$Request.get.id}

//调用Request对象的param方法传入参数为name

{$Request.param.name}

//调用Request对象的param方法传入参数为user.nickname

{$Request.param.user.nickname}

//调用Request对象的root方法

{$Request.root}

//调用Request对象的root方法,并且传入参数true

{$Request.root.true}

//调用Request对象的path方法

{$Request.path}

//调用Request对象的module方法

{$Request.module}

//调用Request对象的controller方法

{$Request.controller}

//调用Request对象的action方法

{$Request.action}

//调用Request对象的ext方法

{$Request.ext}

//调用Request对象的host方法

{$Request.host}

//调用Request对象的ip方法

{$Request.ip}

//调用Request对象的header方法

{$Request.header.accept-encoding}

{$Think}

是系统变量

三、ThinkPHP 3.2 版本升级了哪些内容

[新增]增加index连贯*作方法,用于数据集的强制索引*作

[新增] Model类增加using连贯*作用于多表*作

[新增]增加strict连贯*作,用于设置数据写入和查询是否严格检查是否存在字段默认情况下不合法数据字段自动删除,如果设置了严格检查则会抛出异常。例如:$model->strict(true)->add($data);

[新增]增加fetchSql连贯*作

[新增]添加yaml_parse_file()函数,解析yaml文件返回一个数组

[新增]增加memcache Session驱动

[新增]增加聚合模型,方便一对一的关联数据表*作

[新增]新增TMPL_PATH常量支持可以全局改版模板目录到模块目录之外

[新增]增加Lite模式Db类,仅支持原生SQL*作

[新增]数据库调试增加单独的配置参数 DB_DEBUG(如未设置依然取调试模式常量 APP_DEBUG)

[新增]新增框架核心葡萄牙语言包

[新增]增加COOKIE_SECURE和COOKIE_HTTPONLY配置参数

[新增] MySQL驱动增加ON DUPLICATE KEY UPDATE功能

[改进] Db类和数据库驱动类完全基于PDO重写

[改进]添加全局过滤机制(默认关闭)

[改进] I函数增加修饰符功能和正则检测支持

[改进]采用主从分布式数据库时,从数据库连接失败自动连接主服务器

[改进]增加Model类对复合主键的支持

[改进]改进Mongo模型和驱动类,使用更加方便

[改进]改进session函数删除*作支持数组

[改进]改进session函数对多维赋值的支持

[改进]改进数据库字段缓存的文件标识加上数据表前缀,避免不同前缀的表产生混淆

[改进]针对数据库视图无主键的问题,使用默认id作为主键,与未开启DB_FIELDS_CACHE时行为一致

[改进] SAE模式惯例配置增加上传驱动设置

[改进]改进参数绑定机制

[改进]确保使用参数绑定后日志中生成sql语句的准确性

[改进]模型类的setInc和setDec方法支持延迟写入,同时取消高级模型的相关方法

[改进]日志写入的时候自动创建目录

[改进]改进SQL缓存

[改进]优化缓存队列功能

[改进]路由的请求类型定义不区分大小写

[改进]数据库驱动增加通用insertAll方法支持

[改进]完善 url的验证正则

[改进]单字母函数返回值类型修正以及一些拼写错误修正

[改进]自动创建模型模块的父目录直接调用\Think\Build::buildController和buildModel的情况下创建目录

[改进]日志驱动增加自动目录创建支持

[改进]自动生成的目录结构增加模块的缓存目录

[改进] mysql存储过程支持完善

[改进] Db类改进对多表更新和删除的支持,多表删除支持USING和JOIN*作

[改进]改进parseLock的位置

[改进] Db类的update和delete方法增加多表*作的支持

[改进]改进CURD*作可以直接返回sql语句而不真正执行。

[改进]插件控制器的命名空间可定义不再局限于模块下面增加 ADDON_PATH用于定义插件目录默认位于应用目录下面的Addon

[改进]改进静态缓存读取的有效判断对sae的支持

[改进]日志目录分模块

[改进]模型类的getField方法改进支持在字段名中使用函数

[改进]改进Db类的parseWhere方法

[改进]改进模型的page和limit方法改进分页类

[改进]改进配置文件自动生成

[改进]完善ShowPageTraceBehavior一处函数调用大小写规范

[改进] U函数支持多级控制器

[改进] send_http_status函数增加状态

[改进]允许在项目中定义 APP常量

[改进]改进定义TMPL_PATH后的模板路径定义

[改进] Image类的imagick驱动save方法增加quality参数用于图片质量设置,默认值为80

[改进]改进Image类的JPEG图片生成质量

[改进] Gd库驱动类改进

[改进]改进T函数对TMPL_PATH常量定义的支持

[改进]改进I函数对path.0的支持

[改进]改进关联模型

[改进]改进dispatch_jump模板

[改进]更新api模式支持配置文件的后缀定义

[改进]改进Model类的getModelName方法对多层模型的支持

[改进]改进cookie函数对secure和httponly的支持

[改进]改进模板标签对命名空间的支持,写法{$var|Org\Util\String::rand}

[改进]改进数据表自动识别规则正则规则可以正确识别带有数字的数据表

[改进] Model类的cache方法使用改进 cache(10)等同于 cache(true, 10)

[修正]修正ShowRuntime行为扩展

[修正]修正Model类的add和addall方法中的_facade和_parseOptions的调用顺序问题

[修正]修正使用数组方式动态指定表名后的BUG

[修正]修正ChromShowPage行为扩展

[修正]修正自定义公共模块路径时,加载公共模块类库失败

[修正]修正参数绑定的一处判断

[修正]解决PDO参数绑定后的获取终SQL语句问题

[修正]修正开启布局后show方法的问题

[修正]解决调用trace()无法返回trace日志问题

[修正]修复mongo出现错误输出的问题

[修正]修正页面Trace的日志保存

[修正]修正Model类的save方法

[修正]修正令牌验证没有设置TOKEN_NAME的问题

[修正]修复RestController中请求资源类型总是为html的bug

[修正]修正Model类的getField方法的一处变量冲突问题

[修正]修正Mongo驱动的page处理

[修正]修正 extract方法在分解变量的时候可能导致变量被覆盖的问题

[修正]修正Imagick类库

[修正]修正页面trace插件开启PAGE_TRACE_S**E后出错的问题

[修正]修正controller方法对不使用命名空间的支持

[修正]修正Image类的save方法支持图片质量

[修正]修正高级模型的乐观锁功能

[修正]修正I函数通过FILTER_VALIDATE_EMAIL方式传入常量过滤的一处错误并且过滤参数支持数组

[修正]修正GIF类的架构函数

[修正] Cache类一处常量错误修正

[修正]修改自动生成的配置文件支持CONF_EXT定义

[删除]去掉多余的URL_404_REDIRECT配置参数

3.2.2更新日志

[增加]配置文件增加yaml/json/xml/ini/自定义格式支持

[增加]增加load_config函数用于加载配置文件

[增加]增加CONF_EXT和CONF_PARSE常量,用于定义配置文件后缀及解析方法

[增加]模块增加状态配置文件

[增加]cookie函数增加httponly参数支持

[增加]增加COOKIE_HTTPONLY配置参数

[增加]增加插件的控制器访问支持

[增加]增加CONTROLLER_PATH常量用于定义控制器的命名空间路径

[增加]添加VAR_ADDON配置参数用于设置默认的插件控制器命名空间变量

[增加]dispatcher类增加getSpace方法用于获取控制器的命名空间路径

[增加]I函数增加path和data类型变量的用法

[增加]引入composer支持(还需要完善)

[增加]xcahe和wincache驱动增加clear方法

[增加]自动生成机制支持多个模块的控制器和模型类的批量生成

[修正]修正上传类不能动态改变rootPath的BUG

[修正]修正RestController类的执行顺序

[修正]修正Model类的参数绑定的一处BUG

[修正]修正CronRun行为扩展一处错误

[修正]修正GIF类

[修正]修正rest控制器的encodeData方法

[修正]修正ViewModel可能因空格导致Order方法错误的bug

[修正]修正MongoModel类的写入数据的自增获取

[修正]修正第三方模板引擎驱动类

[修正]修正自动加载可能的一处导致重复加载的问题

[修正]修正__CONTROLLER__在URL不区分大小写情况下的获取

[修正]修正Route类中请求类型判断错误的bug

[修正]修正mysqli驱动的free方法

[改进]改进CronRun行为扩展

[改进]TOKEN_NAME未设置时使用默认值__hash__

[改进]模类的_after_insert回调返回false后直接返回

[改进]Model类的save方法如果data为空则不执行

[改进]Model类的delete方法如果条件为空则不执行删除*作

[改进]改进获取模块方法,支持驼峰法模块命名

[改进]改进模型的查询方法对表前缀的支持,使用当前模型设置的表前缀

[改进]视图模型的视图定义中的_table属性和关联模型中的relation_table支持 __TABLE_NAME__定义方式

[改进]Model类的query和execute方法支持 __TABLE_NAME__定义方式

[改进]改进PDO驱动对pgsql字符转义的支持

[改进]改进Cookie函数对名称中包含“.”的支持

[改进]改进Sae上传驱动增加file['url']信息存储

[改进]Page类添加默认的listRows值

[改进]改进IS_CGI常量的判断,支持fcgi

[改进]改进Db类的multiConnect方法避免切换数据库的时候配置数据被缓存

[改进]改进Db类对传入的参数如果未设置数据编码,设置默认的编码为utf8

[改进]改进B方法支持对行为和扩展类的调用,需要传入完整的类名

[改进]改进验证码类添加验证成功后是否重置session的参数 reset默认为true

[改进]改进session和cookie函数,支持获取全部

[改进]调试模式下,错误的查询条件和非法数据写入会抛异常

[改进]改进Model类的getField方法

[调整]设置VIEW_PATH后参数后无需再定义模块子目录

[调整]为了避免和函数规则冲突,规则路由排除分隔符改为“-”

3.2.1更新日志

[增加]增加Rpc控制器支持

[增加]添加原来的部分扩展类库

[增加]增加RestController

[增加]添加Boris行为扩展

[增加]增加Boris第三方类库

[增加]增加BIND_MODULE BIND_CONTROLLER BIND_ACTION常量定义用于在入口文件中绑定

[增加]增加 module_check标签位

[增加]增加buildLite行为用于根据当前环境生成运行时lite文件可以替换框架入口文件运行,提高效率

[增加] Think类增加getMap方法

[增加] C函数增加默认值功能可以是获取配置参数的时候,当没有定义的时候获取传入的默认值

[增加]增加Yar扩展支持

[增加]添加jsonRPC扩展

[增加]增加Api应用模式扩展和Mode扩展目录

[增加]添加第三方模板引擎

[增加]支持*作方法绑定到类

[增加]增加Think\Auth类

[增加]增加Hprose控制器和第三方类库包

[增加]增加CONF_PATH常量定义

[增加]应用和模块增加自动读取当前应用模式配置文件的功能

[修正]修正正则路由的一个函数处理的bug

[修正]修正模板引擎类的一处bug

[修正]修正L函数的一处错误

[修正]修正驱动类一处错误

[修正]修正MongoModel一处错误

[修正]修正Verify类对多个验证码同一个页面显示的bug

[修正]修正找不到Log类的错误

[修正]修正模型类的一处bug

[修正]修正session函数一处警告错误

[修正]修正U函数的一处警告错误

[修正]修正compile函数的一处bug

[修正]修正验证码的背景图片功能

[修正] Think\Image类常量修正

[修正]修正Image类的架构方法错误

[修正]修正Mongodb数据库驱动

[修正]修正trace方法在CLI下面中文输出*码

[修正]修正控制器类当调用不存在的方法的报错

[改进]改进*作方法的名称识别

[改进]改进数据库驱动支持不同的链接指定不同的charset参数

[改进]改进get_client_ip函数

[改进]改进L函数支持传入变量

[改进]改进PDO驱动当版本低于PHP5.3.6的时候禁用模拟预处理语句

[改进]调整dispatcher类的模块、控制器和*作名获取方法

[改进]页面trace扩展CLI下面不执行

[改进]优化trace方法

[改进]解决因配置文件加载顺序错误导致在SAE环境中运行出错的问题

[改进]改进Storage类

[改进]优化load_ext_file函数

[改进] Behavior类简化(下一版本可能会废弃)

[改进]核心行为类简化取消对Behavior的继承

[改进] C函数并入系统函数库文件

[改进] union连贯*作方法字符串用法支持 TABLE_NAME方式替换

[改进]改进Jion和table连贯*作方法,当使用TABLE_NAME解析的时候支持动态指定的表前缀

[改进]优化U函数

[改进]路由类改进

[改进]改进路由的闭包支持闭包函数如果返回布尔值则继续执行后续否则中止执行

[改进]应用模式定义文件移动到MODE_PATH目录下面便于管理

[改进]默认URL不区分大小写

[改进]改进路由闭包定义

[改进]改进路由的额外参数传入

[改进]重写查询缓存功能

[改进]关联模型修改

[改进] Image类水印生成支持透明度参数

[改进]改进Image驱动

[改进]验证码类改进

[改进]改进上传类及驱动

[改进] session驱动类接口改进无需定义execute方法

[改进]静态缓存仅在get请求下生效

[改进]改进静态缓存行为

[改进]语言文件更新

[改进] Storage类的SAE驱动更新

[改进]英文语言包修正

[改进]改进PDO驱动

[改进]默认生成的测试控制器规范改进

[删除]废除APP_FILE_CASE参数配置改为Windows下调试模式自动开启区分大小写

相关文章

三星(SAMSUNG)65英寸Q70C系列使用感受分享

三星(SAMSUNG)65英寸Q70C系列使用感受分享

很多小伙伴在关注三星(SAMSUNG)65英寸Q70C系列怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一...

TCL电视75V8E好用吗

TCL电视75V8E好用吗

很多小伙伴在关注TCL电视75V8E怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

小米(MI)小米电视55英寸E55S超高清4K全面屏Pro蓝牙语音控制2G+32G网络平板电视机怎么样

小米(MI)小米电视55英寸E55S超高清4K全面屏Pro蓝牙语音控制2G+32G网络平板电视机怎么样

很多小伙伴在关注小米(MI)小米电视55英寸E55S超高清4K全面屏Pro蓝牙语音控制2G+32G网络平板电视机怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用...

Vidda海信65英寸测评使用介绍

Vidda海信65英寸测评使用介绍

很多小伙伴在关注Vidda海信65英寸怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

大疆DJI怎么样

大疆DJI怎么样

很多小伙伴在关注大疆DJI怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

适马(SIGMA)Art85mm质量测评好不好

适马(SIGMA)Art85mm质量测评好不好

很多小伙伴在关注适马(SIGMA)Art85mm怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧...