• ThinkPHP


    配置

    默认配置 < 公共配置 < 模式配置 < 调试配置 < 场景配置 < 模块配置 < 扩展配置 < 动态配置。

    C方法:C($name = null, $value = null, $default = null)

    路由

    普通模式:http://www.example.com/index.php?m=home&c=index&a=index

    pathinfo模式:http://www.example.com/index.php/home/index/index

    rewrite模式:http://www.example.com/ home/index/index

    兼容模式:http://www.example.com/index.php?s=home/index/index

    路由配置

    “URL_ROUTER_ON” => true

    “URL_ROUTE_RULES” => array (

    … 路由表达式

    )

    路由表达式:

    1、规则路由

    2、正则路由

    3、静态路由

    控制器

    伪静态

             通过URL_HTML_SUFFIX设置伪静态的后缀

    URL大小写

             Windows不区分大小写,Linux区分。可设置参数:URL_CASE_INSENSITIVE = true 可实现URL不区分大小写,保持Windows与Linux一致

    URL生成

             U(地址表达式, 参数, 是否显示伪静态后缀, 是否显示域名)

    地址表达式:

             [模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2…

    Ajax返回

             ajaxReturn(变量[, ‘xml/json’)] 默认为json

    重定向和页面跳转

             redirect(URL地址表达式, URL变量, 延迟时间, 提示消息)

             success(提示信息, 跳转地址, 跳转时间)

                       跳转地址:默认跳转$_SERVER[“HTTP_REFERER”]

                       跳转时间:默认1s

             error(提示信息, 跳转地址, 跳转时间)

    跳转地址:默认跳转javascript:history:back(-1);

                       跳转时间:默认3s

    注:

    redirect不可使用模板,只能输出字符串。

    success/error可使用模板,默认为THINK_PATH.’Tpl/dispatch_jump.tpl’

    “TMPL_ACTION_SUCCESS” 配置success模板

    “TMPL_ACTION_ERROR” 配置error模板

    读取输入

             I(‘变量来源.变量名|修饰符’, [‘默认值’], [‘过滤方法’], [‘额外数据源’]

             变量来源:

    来源

    说明

    get

    $_GET

    post

    $_POST

    param

    自动判断$_GET、$_POST和$_PUT

    request

    $_REQUEST

    put

    $_PUT

    session

    $_SESSION

    cookie

    $_COOKIE

    server

    $_SERVER

    globals

    $_GLOBALS

    path

    获取PATHINFO模式的URL参数

    data

    获取其他类型的参数,需要配合额外数据源

             修饰符:

    修饰符

    说明

    s

    强制转换为字符串

    d

    强制转换为整数

    b

    强制转换为布尔型

    a

    强制转换为数组

    f

    强制转换为浮点型

             过滤方法:

    1、没有指定:则采用配置”DEFAULT_FILTER”的值(默认为htmlspecialchars)

    2、指定的为函数名:则直接使用该函数进行操作(可以是数组)

    3、不是函数名:则调用内置的方法filter_var

    4、不过滤:传false

    HTTP请求方法

             IS_GETIS_POSTIS_PUTIS_DELETEIS_AJAXREQUEST_METHOD

    前置和后置操作

             _before_actionname()  _after_actioname()

    动作参数绑定

             functionname($para)

    空操作

             _empty($actionname)

    空控制器

             EmptyController.class.php

    模型

    模型实例化

             1、new 模型类

             2、M方法

             3、D方法

    模型方法

             where ablealiasdatafield(可用来排除字段)orderlimitpagegrouphavingjoinuiondistinctlockcachefetchSql(返回sql,并不执行sql)strictindexcountmaxminavgsumquery(直接执行原生select语句)execute(直接执行原生insertupdatedelete语句)

    CURD

    create() 处理数据,默认自动读取$_POST的数据

    add() 新增

    getField() 获取某列

    find() 读取单条数据

    select() 读取数据集

    save() 更新

    setField() 更新指定字段

    setDec() 对指定字段减操作

    setInc() 对指定指定加操作

    delete() 删除

    where条件

    1、可直接拼接字符串,存在sql注入风险

    2、使用数组

    3、使用对象

    自动验证

    静态方式:在模型类中通过$_validate定义

    动态方式:使用模型类的validate方法

    规则格式:

    array(

             array(字段名, 验证规则, 错误提示, [验证条件, 附加规则, 验证场景])

    )

    自动完成

    静态方式:在模型类里面通过$_auto属性定义处理规则

    动态方式:使用模型类的auto方法动态创建自动处理规则

    规则格式:

    array(

             array(完成字段, 完成规则, [完成条件, 附加规则])

    )

    视图模型

    需要

    use ThinkModelViewModel

    模型类 extends ViewMode

    关联模型

    需要

    use ThinkModelRelationModel

    模型类 extends RelationMode

    关联关系:HAS_ONE, BELONGS_TO, HAS_MANY, MANY_TO_MANY

    视图

    视图目录/[模板主题]/控制器名/操作名+视图后缀

    默认不启用 模板主题,可通过设置DEFAULT_THEME设置

    视图后缀 默认为 .html,可通过 TMPL_TEMPLATE_SUFFIX 设置

    视图目录 默认为 View,可通过 DEFAULT_V_LAYER 设置

    模板赋值:

    在控制器中,通过$this->assign(‘data’, $data)的方式进行赋值,这样在模板中可使用data获取数据。$data可以是数组。

    模板渲染:

    display([模板文件路径], [字符编码], [mime类型])

    模板文件路径写法:

    1、无参数:系统自动定位,默认为“模块名/View/控制器名/方法名.html”

    2、[模块@][控制器:][操作]:比如$this->display(‘User:login’),将定位到“模块名/View/User/login.html”

    3、完整模板文件名

    fetch方法,返回模板内容,不会输出到浏览器,可用此方法开发页面缓存功能。

    模板

    变量输入格式

    {$val}

    默认的{}可通过设置“TMPL_L_DELIM”和”TMPL_R_DELIM”来替换

    系统变量输出

    $_SERVER、$_ENV、$_POST、$_GET、$_REQUEST、$_SESSION、$_COOKIE、配置文件

    可通过

    $Think.server.变量名

    $Think.post.变量名

    $Think.cookie.变量名

    $Think.config.变量名

    输出

    函数使用

    可使用PHP内置函数、ThinkPHP内置函数、用户自定义函数、类静态方法

    格式:

    {变量|函数1|函数2[…=参数1,参数2…]},如果参数是|前面的值,则可用###代替,

    |类似管道的作用,函数从左到右求值后转入后续函数

    变量默认值

    {变量|default=默认值}

    当变量为空时,显示默认值。 ?? default应该就是一个函数吧??

    算术运算

    {+、-、*、/、%}

    注:

    如果操作数是数组,则使用$arr[‘name’]的形式,不可使用arr.name

    如果操作数是对象,则使用$obj->name的形式,不可使用obj->name

    模板继承

    在父模板中

    <block name=”block名称”></block>

    在子模板中

    <extend name=”父模板文件名”/>

    <block name=”父模板中的block名称”>内容</block>

    视图包含

    <include file=”模板表达式或模板文件路径”/>

    模板表达式:

    [模块@][主题/]控制器/操作 (/也可用:替换)

    内置标签

    includeimportvolistforeachforswitchcasedefaultcompare angepresent otpresentempty otemptydefined otdefineddefineassignifelseifelsephp(使用原生PHP语法<?php … ?>)

    不解析输出:

    <literal>

    …里面的标签不会被解析

    </literal>

    模板布局

    layout.html

    <include file=”控制器名:header”/>

    <div id=”content”>

    {__CONTENT__}

    </div>

    <include file=”控制器名:footer”/>

    index.html

    <layout name=”控制器名:layout”/>

    <p>正文</p>

    模板常量

    名称

    常量

    __ROOT__

    当前网址(不包括域名)

    __APP__

    当前应用的URL地址(不包括域名)

    __MODULE__

    当前模块的URL地址(不包括域名)

    __CONTROLLER__

    当前控制器的URL地址(不包括域名)

    __ACTION__

    当前操作的URL地址(不包括域名)

    __SELF__

    当前页面的URL

    在模板中直接填常量名称,不用{}包裹

    调试

    设置调试模式

    define(‘APP_DEBUG’, true/false)

    日志

    LOG_RECORDED => true/false

    LOG_LEVEL => ‘EMERG,ALERT,CRIT,ERR’

    日志级别

    日志级别

    说明

    EMERG

    严重错误,出现错误是程序无法运行

    ALERT

    警戒性错误,必须立即被修正

    CRIT

    临界值错误,超过临界值的错误

    ERR

    一般错误

    WARN

    警告错误

    NOTICE

    通知级别错误

    INFO

    信息级别

    DEBUG

    调试输出

    SQL

    SQL语句,调试模式下有效

    LOG_TYPE => ‘File/Sae’

    写入日志

    record($message, $level=self::ERR, $record=false)

    $record:是否强制记录

    write($message, $level=self::ERR, $type=’’, $destination=’’)

    变量输出

    PHP内置:print_r、var_dump

    ThinkPHP内置:dump

    执行统计

    G(‘start’);

    //业务代码

    G(‘end’);

    echo G(‘start’, ‘end’).’秒’

    SQL输出

    getLastSql()

    返回该模型最后执行的SQL语句

    缓存

    数据缓存

    S($name, $value=’’, $options=null)

    页面缓存

    数据库查询缓存

    session

    ThinkPHP默认开启session, 可通过SESSION_AUTO_START设置

    session(‘key’, ‘value’) 设置 其中key可以是user.userId 中间带.的形式

    session(‘key’) 获取

    session() 获取全部

    session(‘key’, null) 删除

    session(null) 删除全部

    cookie

    cookie(‘name’, ‘value); //有效期到浏览关闭

    cookie(‘name’, ‘value’, 7*24*3600); //有效期一周

    cookie(‘name’) 获取

    cookie() 获取全部

    cookie(‘name’, null) 删除

    分页

    $mode = new Mode(‘模型名称’);

    $code => $mode -> count(); //总记录数

    $page = new ThinkPage($code, 30); //实例化分页类,每页30行

    $show = $page -> show(); //分页显示数据内容(即分页的导航条)

    $list = $mode -> limit($page -> firstRow . ‘,’ . $page -> listRows) –> select();

    $this->assign(‘list’, $list); //赋值数据集

    $this->assign(‘page’, $show); //赋值分页输出

    $this->display();

    文件上传

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

    $upload -> maxSize = 1024 * 1024 * 2; //2M

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

    $upload -> rootPath = ‘./Uploads/’; //设置上传根目录

    $upload -> savePath = ‘’; //设置上传子目录

    //上传文件

    $info = $upload->upload();

    if (!$info) {//上传出错

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

    } else {

             $filePath = ‘Uploads/’ . $info[‘file’][‘savepath’] . $info[‘file’][‘savename’];

    }

    其中’file’为页面input标签的name属性

    默认的savePath为日期格式的文件夹

    验证码

    public function verify() {

             $verify = new Verify(); //验证码类

             $verify->entry(); //产生并输出验证码图片

    }

    前端页面中

    <img src=”{:U(‘veryfy’)}” onClick=”this.src = ‘{:U(“verify”)}?’ + Math.random()” title=”看不清,换一张” >

    验证

    $code = I(‘code’);

    $veryfy = new Verify();

    if ($verify->check($code)) {

             $this->success(‘验证成功’);

    } else {

             $this->error(‘验证码错误’);

    }

    图像处理

    ThinkPHP的Image类支持GD库和Imagick库。

    实例化

    $path = ‘./Public/images/demo.jpg’;

    $image = new Image(Image::IMAGE_GD, $path);

    或者

    $image = new Image(Image::IMAGE_IMAGICK, $path);

    图像缩放

    thumb($width, $height, $type = self::IMAGE_THUMB_SCALE)

    $width:缩略图最大宽度

    $height:缩略图最大高度

    $type:缩略图剪裁类型

    IMAGE_THUMB_SCALE 等比例缩放

    IMAGE_THUMB_FIFLED 缩放后填充

    IMAGE_THUMB_CENTER 居中

    IMAGE_THUMB_NORTHWEST 左上角

    IMAGE_THUMB_SOUTHEAST 右下角

    IMAGE_THUMB_FIXED 固定尺寸缩放

    图像裁剪

    crop($w, $h, $x = 0, $y = 0, $width = null, $height = null)

    $w:剪裁区域的宽度

    $h:剪裁区域的高度

    $x:剪裁区域横坐标

    $y:剪裁区域纵坐标

    $width:图片保存宽度

    $height:图片保存的高度

    图像水印

    water($source, $locate = self::IMAGE_WATER_SOUTHEAST, $alpha = 80)

    $source:水印图片路径

    $locate:水印位置

    $alpha:水印透明度

  • 相关阅读:
    stack计算表达式的值
    stack例子
    stoi的例子
    前端 获取项目根路径的四种方式
    document.write()
    动态引入js文件
    Uncaught SyntaxError: Invalid or unexpected token
    oracle 快速备份表数据
    Tsinsen A1303. tree(伍一鸣) LCT
    VS2015--win32project配置的一些想法之cmake
  • 原文地址:https://www.cnblogs.com/yarightok/p/9222683.html
Copyright © 2020-2023  润新知