zoukankan      html  css  js  c++  java
  • ThinkPHP快捷方法汇总(随时添加)

    读取配置  

    C('参数名称')

    例如,读取当前的URL模式配置参数:

    $model = C('URL_MODEL');
    // 由于配置参数不区分大小写,因此下面的写法是等效的
    // $model = C('url_model');

    C方法也可以用于读取二维配置:

    //获取用户配置中的用户类型设置
    C('USER_CONFIG.USER_TYPE');

    因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数已经生效过期了。


    动态配置

    设置格式:C('参数名称','新的参数值')

    例如,我们需要动态改变数据缓存的有效期的话,可以使用

    // 动态改变缓存有效期
    C('DATA_CACHE_TIME',60);

    动态配置赋值仅对当前请求有效,不会对以后的请求造成影响。

    动态改变配置参数的方法和读取配置的方法在使用上面非常接近,都是使用C方法,只是参数的不同。 

    也可以支持二维数组的读取和设置,使用点语法进行操作,如下:

    // 获取已经设置的参数值
    C('USER_CONFIG.USER_TYPE');
    // 设置新的值
    C('USER_CONFIG.USER_TYPE',1);

    实例化控制器

    A

    // 假设当前模块是Home模块
    $User = A('User'); 
    $Blog = A('Admin/Blog');

    默认情况下,A方法实例化的是默认控制器层(Controller),如果你要实例化其他的分层控制器的话,可以使用:

    // 假设当前模块是Home模块
    // 实例化Event控制器
    $User = A('User','Event'); 
    $Blog = A('Admin/Blog','Event');

    R

    备注:需要指定方法

    echo R('Admin/Index/index');

    URL生成

    U方法,用于URL的动态生成:   U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])

    如果不定义模块的话 就表示当前模块名称,下面是一些简单的例子:

    U('User/add') // 生成User控制器的add操作的URL地址
    U('Blog/read?id=1') // 生成Blog控制器的read操作 并且id为1的URL地址
    U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址
    参数

    U方法的第二个参数支持数组和字符串两种定义方式,如果只是字符串方式的参数可以在第一个参数中定义,例如:

    U('Blog/cate',array('cate_id'=>1,'status'=>1))
    U('Blog/cate','cate_id=1&status=1')
    U('Blog/cate?cate_id=1&status=1')

    三种方式是等效的,都是生成Blog控制器的cate操作 并且  cate_id  为1   status  为1的URL地址。

    伪静态后缀

    U函数会自动识别当前配置的伪静态后缀,如果你需要指定后缀生成URL地址的话,可以显式传入,例如:

    U('Blog/cate','cate_id=1&status=1','xml');

    获取变量

    I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:

    I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])

    我们以GET变量类型为例,说明下I方法的使用:

    echo I('get.id'); // 相当于 $_GET['id']
    echo I('get.name'); // 相当于 $_GET['name']

    支持默认值:

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

    采用方法过滤:

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

    支持直接获取整个变量类型,例如:

    // 获取整个$_GET 数组
    I('get.'); 

    用同样的方式,我们可以获取post或者其他输入类型的变量,例如:

    I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串
    I('session.user_id',0); // 获取$_SESSION['user_id'] 如果不存在则默认为0
    I('cookie.'); // 获取整个 $_COOKIE 数组
    I('server.REQUEST_METHOD'); // 获取 $_SERVER['REQUEST_METHOD'] 

    param变量类型是框架特有的支持自动判断当前请求类型的变量获取方式,例如:

    echo I('param.id');

    如果当前请求类型是GET,那么等效于 $_GET['id'],如果当前请求类型是POST或者PUT,那么相当于获取 $_POST['id'] 或者 PUT参数id。

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

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

    path类型变量可以用于获取URL参数(必须是PATHINFO模式参数有效,无论是GET还是POST方式都有效),例如: 当前访问URL地址是   http://serverName/index.php/New/2013/06/01  

    那么我们可以通过

    echo I('path.1'); // 输出2013
    echo I('path.2'); // 输出06
    echo I('path.3'); // 输出01

    data类型变量可以用于获取不支持的变量类型的读取,例如:

    I('data.file1','','',$_FILES);

    模型实例化

    D方法:  

    D方法的参数就是模型的名称,并且和模型类的大小写定义是一致的,D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的ThinkModel基类,同时对于已实例化过的模型,不会重复实例化。

    D方法还可以支持跨模块调用,需要使用:
    //实例化Admin模块的User模型
    D('Admin/User');
    //实例化Extend扩展命名空间下的Info模型
    D('Extend://Editor/Info');

    注意:跨模块实例化模型类的时候 不支持自动加载公共模块的模型类。

    M方法:

    D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。

    例如:

    // 使用M方法实例化
    $User = M('User');
    // 和用法 $User = new ThinkModel('User'); 等效
    // 执行其他的数据操作
    $User->select();

    M方法也可以支持跨库操作,例如:

    // 使用M方法实例化 操作db_name数据库的ot_user表
    $User = M('db_name.User','ot_');
    // 执行其他的数据操作
    $User->select();

    M方法的参数和ThinkModel类的参数是一样的,也就是说,我们也可以这样实例化:

    $New  = M('new','think_',$connection);
    // 等效于 $New = new ThinkModel('new','think_',$connection);

    M方法实例化的时候,默认情况下是直接实例化系统的ThinkModel类,如果我们希望实例化其他的公共模型类的话,可以使用如下方法:

    $User = M('HomeModelCommonModel:User','think_','db_config');
    // 相当于 $User = new HomeModelCommonModel('User','think_','db_config');

    备注:如果你的模型类有自己的业务逻辑,M方法是无法支持的,就算是你已经定义了具体的模型类,M方法实例化的时候是会直接忽略。


    读取系统信息

    var_dump(get_defined_constants(true));
  • 相关阅读:
    某题3
    无向图Tarjan&&求树直径
    分布式消息中间件(一)设计
    大数据算法(一)亚线性算法
    SparkSQL
    MySQL索引
    Spark程序设计
    Java高并发网络编程(五)Netty应用
    Java高并发网络编程(四)Netty
    Java高并发网络编程(三)NIO
  • 原文地址:https://www.cnblogs.com/sihuiming/p/5492613.html
Copyright © 2011-2022 走看看