ThinkPHP3.2基础知识(一)包含文件上传

时间:2024-03-17 22:43:56

1.入口文件中定义的内容

// 检测PHP环境
if(version_compare(PHP_VERSION,\'5.3.0\',\'<\')) die(\'require PHP > 5.3.0 !\');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define(\'APP_DEBUG\',True);
// 定义应用目录
define(\'APP_PATH\',\'./Application/\');
// 引入ThinkPHP入口文件
require \'./ThinkPHP/ThinkPHP.php\';
//定义根目录的绝对地址
define(\'ROOT\',str_replace("\\","/",dirname(__FILE__)));

2.U方法的参数规则

(\'地址表达式\',[\'参数\'],[\'伪静态后缀\'],[\'显示域名\'])

地址表达式[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...

3.如何判断请求类型,常用的请求方式有哪两种,I方法的参数规则?

判断请求类型:REQUEST_METHOD
常见的请求方式:get post
I方法的参数规则:I(\'变量类型.变量名\',[\'默认值\'],[\'过滤方法\'],[\'额外数据源\'])

  注意:变量类型不区分大小写。
  变量名则严格区分大小写。
  默认值和过滤方法均属于可选参数。

4.成功和失败,重定向跳转的方法以及参数规则。

success(\'成功条件\',\'跳转地址\',‘跳转时间’);

注意:方法的默认跳转地址是$_SERVER["HTTP_REFERER"]

error(\'错误提示\',\'跳转地址\',‘跳转时间’);

注意:默认的等待时间success方法是1秒,error方法是3秒

重定向到New模块的Category操作
重定向:$this->redirect(\'New/category\', array(\'cate_id\' => 2), 5, \'页面跳转中...\');

重定向到指定的URL地址

redirect(\'/New/category/cate_id/2\', 5, \'页面跳转中...\')

5.URL的四种模式,简述每种形式的规则

普通模式:http://localhost/?模块=home&控制器=user&操作=login&var=value
pathinfo模式:http://localhost/index.php/home/user/login/var/value/
REWRITE模式:http://localhost/home/user/login/var/value
兼容模式:http://localhost/?s=/home/user/login/var/value

6.TP常用的配置文件有哪几个?配置文件的加载顺序依次是什么?

配置文件:1.惯例配置:框架内置配置文件(位于ThinkPHP/Conf/convention.php
     2.应用配置:应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(默认位于Application/Common/Conf/config.php
     3.模块配置:每个模块会自动加载自己的配置文件(位于Application/当前模块名/Conf/config.php
加载顺序:惯例配置--->应用配置--->模块配置

7.模版渲染display方法的参数规则

display(\'[模板文件]\'[,\'字符编码\'][,\'输出类型\']);
模板文件的写法支持下面几种:

8.常用的模版内置标签以及在模版中使用的示例,举出5个!

1.<foreach name=\'\' item=\'\' key=\'\'></foreach>
2.<volist name=\'\' id=\'\'></volist>
3.<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" ></for>
4.比较标签:
<eq name="name" value="value">value</eq>
5.范围判断标签:<in name="id" value="1,2,3">id在范围内</in>
6.<if condition="$value eq $k">value</if>
7.
<empty name="name">name为空值</empty>
8.
<import file="Js.Util.Array" basepath="其他目录" />//起始路径是Public目录

9.模版包含的参数规则以及举例说明

include标签用法:<include file=\'模版表达式或者模版文件1,模版表达式或者模版文件2,...\' />

  模版表达式的定义规则为:模块@主题/控制器/操作



          1.使用模板表达式:例如: 

          2.使用模板文件:可以直接包含一个模板文件名(包含完整路径),例如:
<include file="./Application/Home/View/default/Public/header.html" /
          
          3.传入参数:<
include file="Public/header" title="ThinkPHP框架" keywords="开源WEB开发框架" />
                  模板中使用:

10.三大自动的参数规则

字段映射:protected $_map=array(
        \'表单中的名\'=>‘字段名’//把表单中的name名映射到数据表中的字段名
      );
自动验证:protected $_validate=array(
        array(\'字段名\',\'验证规则\',\'提示信息\',\'验证条件\',\'附加规则\',\'验证时间\'),
      );
自动完成:protected $_auto=array(
        array(\'字段名\',\'验证规则\',\'验证时间\',\'附加规则\'),
      );

11.举例描述上传类在控制器中调用的全过程代码(要求包含控制器的代码以及模型类新增数据到数据库的全部代码),并说明表单中需要注意的内容!

模型类:
public function doUpload(){
if(empty($config)){
$config = array(
\'maxSize\' => 3145728,
\'rootPath\' => \'./Public/\',//保存根路径,一定要重新设置,否则无法找到根路径
\'savePath\' => \'Uploads/\',
\'saveName\' => array(\'uniqid\',\'\'),
\'exts\' => array(\'jpg\', \'gif\', \'png\', \'jpeg\'),
\'autoSub\' => true,
\'subName\' => array(\'date\',\'Ymd\'),
);
}
$upload=new Upload($config);
$info=$upload->upload();
if(!$info){
$this->error=$upload->getError();
return false;
}
foreach($info as $key=>$v){
$pic[$key]=$v[\'savepath\'].$v[\'savename\'];
}
return $pic;
}
控制器:
$pic=$this->work->doUpload();
$_POST[\'图片字段\']=$pic[\'图片字段\'];//添加到数据库中
表单中需要注意的内容
1.<form action="" method="post" enctype="multipart/form-data" ></form>
2.<input type="file" name="" value="">
3.注意rootPath路径。
注意:保存根路径,一定要重新设置,否则无法找到根路径