thinkphp323学习笔记.docx
- 文档编号:1847088
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:21
- 大小:22.49KB
thinkphp323学习笔记.docx
《thinkphp323学习笔记.docx》由会员分享,可在线阅读,更多相关《thinkphp323学习笔记.docx(21页珍藏版)》请在冰点文库上搜索。
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);
$(function(){
$('button').bind('click',function(){
$.get('__URL__/getajax/id/{$_GET['id']}',function(jdate){
if(jdate.status==1)
{
$('.about_cpb').html(jdate.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:
Volist标签
{$vo.id}:
{$vo.name}
输出其中的第5~15条记录
{$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标签
对于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标签来防止模板标签被解析
模板注释
单行注释{/*注释内容*/}或{//注释内容}
多行注释
{/*这是模板
注释内容*/}
模板替换
__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();或者
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- thinkphp323 学习 笔记