thinkphp323学习笔记.docx

上传人:b****2 文档编号:1847088 上传时间:2023-05-01 格式:DOCX 页数:21 大小:22.49KB
下载 相关 举报
thinkphp323学习笔记.docx_第1页
第1页 / 共21页
thinkphp323学习笔记.docx_第2页
第2页 / 共21页
thinkphp323学习笔记.docx_第3页
第3页 / 共21页
thinkphp323学习笔记.docx_第4页
第4页 / 共21页
thinkphp323学习笔记.docx_第5页
第5页 / 共21页
thinkphp323学习笔记.docx_第6页
第6页 / 共21页
thinkphp323学习笔记.docx_第7页
第7页 / 共21页
thinkphp323学习笔记.docx_第8页
第8页 / 共21页
thinkphp323学习笔记.docx_第9页
第9页 / 共21页
thinkphp323学习笔记.docx_第10页
第10页 / 共21页
thinkphp323学习笔记.docx_第11页
第11页 / 共21页
thinkphp323学习笔记.docx_第12页
第12页 / 共21页
thinkphp323学习笔记.docx_第13页
第13页 / 共21页
thinkphp323学习笔记.docx_第14页
第14页 / 共21页
thinkphp323学习笔记.docx_第15页
第15页 / 共21页
thinkphp323学习笔记.docx_第16页
第16页 / 共21页
thinkphp323学习笔记.docx_第17页
第17页 / 共21页
thinkphp323学习笔记.docx_第18页
第18页 / 共21页
thinkphp323学习笔记.docx_第19页
第19页 / 共21页
thinkphp323学习笔记.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

thinkphp323学习笔记.docx

《thinkphp323学习笔记.docx》由会员分享,可在线阅读,更多相关《thinkphp323学习笔记.docx(21页珍藏版)》请在冰点文库上搜索。

thinkphp323学习笔记.docx

thinkphp323学习笔记

3.2框架初始的目录结构如下:

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

2.├─index.php入口文件

3.├─README.mdREADME文件

4.├─Application应用目录

5.├─Public资源文件目录

6.└─ThinkPHP框架目录

3.2版本自带了一个完整的应用目录结构和默认的应用入口文件。

其中,Application和Public目录下面都是空的。

README.md文件仅用于说明,实际部署的时候可以删除。

上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。

Application目录默认是空的,但是第一次访问入口文件会自动生成,参考后面的入口文件部分。

其中框架目录ThinkPHP的结构如下:

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

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

3.│├─Conf核心配置目录

4.│├─Lang核心语言包目录

5.│├─Library框架类库目录

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

7.││├─Behavior行为类库目录

8.││├─OrgOrg类库包目录

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

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

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

12.│├─Tpl系统模板目录

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

14.│├─logo.png框架LOGO文件

15.│├─README.txt框架README文件

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

上述应用的目录结构只是默认设置,事实上,在实际部署应用的时候,我们建议除了应用入口文件

和Public资源目录外,其他文件都放到非WEB目录下面,具有更好的安全性。

入口文件:

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

define('DIR_SECURE_FILENAME','default.html');//支持多个安全文件写入define('DIR_SECURE_FILENAME','index.html,index.htm');//默认的安全文件只是写入一个空白字符串,如果需要写入其他内容,可以通过DIR_SECURE_CONTENT参

数来指定define('DIR_SECURE_CONTENT','deneyAccess!

');

define('RUNTIME_PATH','./Runtime/');

define('APP_DEBUG',True);

define('THINK_PATH',realpath('../Think').'/');

requireTHINK_PATH.'ThinkPHP.php';//require'./ThinkPHP/ThinkPHP.php';

*配置文件的定义格式均采用返回PHP数组的方式

*惯例配置文件(位于ThinkPHP/Conf/convention.php)

*应用配置文件调用所有模块之前都会首先加载的公共配置文件(默认位于Application/Common/Conf/config.php)

http:

//127.0.0.1/tp/home/index/index

http:

//serverName/index.php/Home/Index/index

http:

//localhost/?

m=home&c=user&a=login&var=value

获取已经设置的参数值:

C('参数名称')

设置新的值:

C('参数名称','新的参数值');

扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样。

设置扩展配置的方式

如下(多个文件用逗号分隔):

//加载扩展配置文件

'LOAD_EXT_CONFIG'=>'user,db',

获取变量

I('变量类型.变量名',['默认值'],['过滤方法'])

变量类型含义

get获取GET参数

post获取POST参数

param自动判断请求类型获取GET、POST或者PUT参数

request获取REQUEST参数

put获取PUT参数

session获取$_SESSION参数

cookie获取$_COOKIE参数

server获取$_SERVER参数

globals获取$GLOBALS参数

echoI('get.id');//相当于$_GET['id']

echoI('get.name');//相当于$_GET['name']

echoI('get.id',0);//如果不存在$_GET['id']则返回0

echoI('get.name','');//如果不存在$_GET['name']则返回空字符串

采用方法过滤:

//采用htmlspecialchars方法对$_GET['name']进行过滤,如果不存在则返回空字符串

echoI('get.name','','htmlspecialchars');

//获取整个$_GET数组

I('get.');

由于param类型是I函数默认获取的变量类型,因此事实上param变量类型的写法可以简化为:

I('id');//等同于I('param.id')

I('name');//等同于I('param.name')

param类型变量还可以用数字索引的方式获取URL参数(必须是PATHINFO模式参数有效,无论是GET还

是POST方式都有效),例如:

当前访问URL地址是http:

//serverName/index.php/New/2013/06/01

那么我们可以通过

echoI('param.1');//输出2013

echoI('param.2');//输出06

echoI('param.3');//输出01

//下面两种方式都不采用任何过滤方法

I('get.name','','');

I('get.id','',false);

判断请求类型

常量说明

IS_GET判断是否是GET方式提交

IS_POST判断是否是POST方式提交

IS_PUT判断是否是PUT方式提交

IS_DELETE判断是否是DELETE方式提交

IS_AJAX判断是否是AJAX提交

REQUEST_METHOD当前提交类型

AJAX返回

$data='ok';

$this->ajaxReturn($data);

空操作

空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。

使用函数

{$data.name|md5}

{$create_time|date="y-m-d",###}//表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是y-m-d,第二个参数是前面要输出的create_time变量,因为该变量是第二个参数,因此需要用###标识变量位置,

{$data.name|substr=0,3}//前面输出的变量在后面定义的函数的第一个参数

{$name|md5|strtoupper|substr=0,3}//支持多个函数过滤,多个函数之间用“|”分割

{:

substr(strtoupper(md5($name)),0,3)}

默认值输出

{$user.nickname|default="这家伙很懒,什么也没留下"}

包含文件***********

f.html:

[title]

Volist标签

{$vo.id}:

{$vo.name}

输出其中的第5~15条记录

{$vo.name}

输出偶数记录

{$vo.name}

Mod属性还用于控制一定记录的换行

{$vo.uname}


为空的时候输出提示:

{$vo.id}|{$vo.name}

输出循环变量

{$k}.{$vo.name}

如果没有指定key属性的话,默认使用循环变量i,例如:

{$i}.{$vo.name}

Foreach标签

{$key}|{$vo.id}:

{$vo.name}

可以定义索引的变量名

{$k}|{$vo.id}:

{$vo.name}

For标签

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。

comparison的默认值是lt;;name的默认值是i,步进值的默认值是1

Switch标签

输出内容1

输出内容2

默认情况

对于case的value属性可以支持多个条件的判断,使用”|”进行分割图像格式

比较标签

<比较标签name="变量"value="值">

内容

标签含义

eq或者equal等于

neq或者notequal不等于

gt大于

egt大于等于

lt小于

elt小于等于

heq恒等于

nheq不恒等于

范围判断标签

IN和NOTIN

id在范围内

id不在范围内

BETWEEN和NOTBETWEEN

输出内容1

RANGE

输出内容1

其中type属性的值可以用in/notin/between/notbetween

IF标签

value1

value2

value3

在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符

号的用法,因为会混淆模板解析

Present标签

present标签用于判断某个变量是否已经定义

name已经赋值

判断没有赋值

name还没有赋值

name已经赋值

name还没有赋值

Empty标签

empty标签用于判断某个变量是否为空

name为空值

如果判断没有赋值

name不为空

name为空

name不为空

Defined标签

DEFINED标签用于判断某个常量是否有定义

NAME常量已经定义

如果判断没有被定义

NAME常量未定义

NAME常量已经定义

NAME常量未定义

Assign标签

SSIGN标签用于在模板文件中赋值变量

Define标签

DEFINE标签用于中模板中定义常量

标签嵌套

输出双重循环

{$sub.name}

import标签

原样输出

可以使用literal标签来防止模板标签被解析

value1

value2

value3

模板注释

单行注释{/*注释内容*/}或{//注释内容}

多行注释

{/*这是模板

注释内容*/}

模板替换

__ROOT__:

会替换成当前网站的地址(不含域名)

__APP__:

会替换成当前应用的URL地址(不含域名)

__MODULE__:

会替换成当前模块的URL地址(不含域名)

__CONTROLLER(__或者__URL__兼容考虑):

会替换成当前控制器的URL地址(不含域名)

__ACTION__:

会替换成当前操作的URL地址(不含域名)

__SELF__:

会替换成当前的页面URL

__PUBLIC__:

会被替换成当前网站的公共目录通常是/Public/

文件上传:

页面:

文件:


程序:

publicfunctionupload()

{

$upload=new\Think\Upload();//实例化上传类

$upload->maxSize=ini_get('upload_max_filesize')*1024*1024;//设置附件上传大小

$upload->exts=array('jpg','gif','png','jpeg');//设置附件上传类型

$upload->savePath='./uploads/';//设置附件上传目录

//上传文件

$info=$upload->upload();

if(!

$info)

{

//上传错误提示错误信息

$this->error($upload->getError());

}

else

{

//上传成功

//$this->success('上传成功!

');

echo"";

}

}

或者

publicfunctionupload()

{

$config=array(

'maxSize'=>ini_get('upload_max_filesize')*1024*1024,

'savePath'=>'./uploads/',

'saveName'=>array('uniqid',''),

'exts'=>array('jpg','gif','png','jpeg'),

'autoSub'=>true,

'subName'=>array('date','Ymd'),

);

$upload=new\Think\Upload($config);//实例化上传类

//上传文件

$info=$upload->upload();

if(!

$info)

{

//上传错误提示错误信息

$this->error($upload->getError());

}

else

{

//上传成功

//$this->success('上传成功!

');

echo"";

}

}

验证码

$Verify=new\Think\Verify();

$Verify->entry();

$config=array(

'fontSize'=>30,//验证码字体大小

'length'=>3,//验证码位数

'useNoise'=>false,//关闭验证码杂点

);

$Verify=new\Think\Verify($config);

$Verify->entry();

验证码检测

//检测输入的验证码是否正确,$code为用户输入的验证码字符串

functioncheck_verify($code,$id='')

{

$verify=new\Think\Verify();

return$verify->check($code,$id);

}

图像处理

使用open方法打开图像文件进行相关操作:

$image=new\Think\Image();

$image->open('./1.jpg');

获取图像信息

$width=$image->width();//返回图片的宽度

$height=$image->height();//返回图片的高度

$type=$image->type();//返回图片的类型

$mime=$image->mime();//返回图片的mime类型

$size=$image->size();//返回图片的尺寸数组0图片宽度1图片高度

裁剪图片(使用crop和save方法完成裁剪图片功能)

//将图片裁剪为400x400并保存为corp.jpg

$image->crop(400,400)->save('./crop.jpg');

支持从某个坐标开始裁剪,例如下面从(100,30)开始裁剪:

//将图片裁剪为400x400并保存为corp.jpg

$image->crop(400,400,100,30)->save('./crop.jpg');

生成缩略图(使用thumb方法生成缩略图)

//按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg

$image->thumb(150,150)->save('./thumb.jpg');

添加图片水印

//将图片裁剪为440x440并保存为corp.jpg

$image->crop(440,440)->save('./crop.jpg');

//给裁剪后的图片添加图片水印(水印文件位于./logo.png),位置为右下角,保存为water.gif

$image->water('./logo.png')->save("water.jpg");

//给原图添加水印并保存为water_o.gif(需要重新打开原图)

$image->open('./1.jpg')->water('./logo.png')->save("water_o.jpg");

IP获取和定位

$ip=get_client_ip();

$User=M("User");//实例化User对象

$result=$User->find

(1);

$result=$User->limit(10)->select();

在thinkphp里面执行原生的sql语句

$Model=newModel();//或者$Model=D();或者

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2