×
基础获取ThinkPHPThinkPHP环境要求ThinkPHP目录结构ThinkPHP入口文件自动生成ThinkPHP模块ThinkPHP控制器ThinkPHP开发规范配置配置格式配置加载读取配置动态配置扩展配置批量配置

架构

模块化设计URL模式多层MVCCBD模式命名空间自动加载应用模式项目编译系统流程路由路由定义规则路由正则路由静态路由闭包支持实例说明

控制器

控制器定义前置和后置操作Action参数绑定伪静态URL大小写URL生成AJAX返回跳转和重定向输入变量请求类型空操作空控制器插件控制器操作绑定到类模型模型定义模型实例化字段定义连接数据库切换数据库分布式数据库支持连贯操作WHERETABLEALIASDATAFIELDORDERLIMITPAGEGROUPHAVINGJOINUNIONDISTINCTLOCKCACHECOMMENTRELATIONUSINGfetchSqlTOKENSTRICTINDEX命名范围CURD操作数据创建数据写入数据读取数据更新数据删除ActiveRecord字段映射

查询语言

查询方式表达式查询快捷查询区间查询组合查询统计查询SQL查询动态查询子查询自动验证自动完成参数绑定虚拟模型模型分层视图模型关联模型高级模型Mongo模型视图模板定义模板主题模板赋值模板渲染获取模板地址获取内容模板引擎模板变量输出系统变量使用函数默认值输出使用运算符标签库模板继承修改定界符三元运算包含文件内置标签比较标签范围判断标签IF标签Present标签Empty标签Defined标签Volist标签Assign标签Foreach标签Define标签For标签标签嵌套Switch标签import标签使用PHP代码原样输出模板注释模板布局模板替换调试调试模式异常处理日志记录页面TraceTrace方法变量调试性能调试错误调试模型调试缓存数据缓存快速缓存查询缓存SQL解析缓存静态缓存安全输入过滤表单合法性检测表单令牌防止SQL注入目录安全文件保护模板文件上传安全防止XSS攻击其他安全建议扩展类库扩展驱动扩展缓存驱动数据库驱动日志驱动Session驱动存储驱动模板引擎驱动标签库驱动行为扩展标签扩展Widget扩展应用模式部署PATH_INFO支持URL重写模块部署域名部署入口绑定替换入口专题SESSION支持Cookie支持多语言支持数据分页文件上传验证码图像处理RESTFulRPCSAE

微信SDK

WechatIP获取和定位附录常量参考配置参考升级指导鸣谢

域名部署


ThinkPHP支持模块(甚至可以包含控制器)的完整域名、子域名和IP部署功能,让你的模块变得更加灵活,模块绑定到域名或者IP后,URL地址中的模块名称就可以省略了,所以还可以起到简化URL的作用。

开启域名部署

无论是子域名还是IP部署,首先要在应用配置文件中开启APP_SUB_DOMAIN_DEPLOY,这是前提,然后配置域名部署规则APP_SUB_DOMAIN_RULES

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名或者IP配置
'APP_SUB_DOMAIN_RULES'    =>    array( 
    /* 域名部署配置 
    *格式1: '子域名或泛域名或IP'=> '模块名[/控制器名]'; 
    *格式2: '子域名或泛域名或IP'=> array('模块名[/控制器名]','var1=a&var2=b&var3=*'); 
    */ 
)

域名部署的定义格式2和1的区别在于格式2可以隐式传入额外的参数。

域名和IP的解析涉及到DNS解析以及Apache等服务器的配置,这块不再详细描述,请参考相关百度资料。

域名或者IP部署到模块并不需要设置模块访问列表。

完整域名部署

可以在域名规则中直接定义完整的域名,例如:

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES'    =>    array(   
    'admin.domain1.com'  => 'Admin',  // admin.domain1.com域名指向Admin模块
    'test.domain2.com'   => 'Test',  // test.domain2.com域名指向Test模块
),

在域名部署之前的访问地址: http://www.domain.com/Admin/Index/indexhttp://www.domain.com/Test/Index/index

域名部署后的访问地址变成: http://admin.domain1.com/Index/indexhttp://test.domain2.com/Index/index

子域名部署

子域名部署包括任意级子域名的支持,在你的应用配置文件中增加如下配置参数:

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES'    =>    array(   
    'admin'        => 'Admin',  // admin子域名指向Admin模块
    'test'         => 'Test',  // test子域名指向Test模块
),

部署之前的访问地址:http://www.domain.com/Admin/Index/index

部署后的访问地址变成: http://admin.domain.com/Index/index

如果你的部署域名后缀是二级后缀,例如 com.cnnet.cn 或者 org.cn 之类的话,为了让系统更好的识别你的子域名,需要配置APP_DOMAIN_SUFFIX如下:

'APP_DOMAIN_SUFFIX'=>'com.cn'

APP_DOMAIN_SUFFIX参数不支持设置多个后缀,如果你是一级域名后缀的话则该参数可以无需任何设置。

传入参数

子域名部署的时候,可以传入隐式的参数,例如:

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES'    =>    array(   
    'admin'        => array('Admin','var1=1&var2=2'),  // admin子域名指向Admin模块
),

访问 http://admin.domain.com/Index/index 的同时会传入 $_GET['var1'] = 1$_GET['var2'] = 2 两个参数。

控制器绑定

子域名部署还可以支持绑定某个控制器,例如:

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES'    =>    array(   
    'test.admin'   => 'Admin/Test',  // test.admin子域名指向Admin模块的Test控制器
),

部署之前的访问地址: http://www.domain.com/Admin/Test/index

部署后的访问地址: http://test.admin.domain.com/index

泛域名部署

如果要部署某个模块到泛域名支持,可以使用:

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES'    =>    array(   
    'admin'    =>    'Admin',  // admin域名指向Admin模块
    '*'        =>    array('Test','var1=1&var2=*'), // 二级泛域名指向Test模块
    '*.user'   =>    array('User','status=1&name=*'),  // 三级泛域名指向User模块
),

配置后,我们可以访问:

http://hello.domain.com/Index/index

访问Test模块 并隐式传入$_GET['var1'] = 1$_GET['var2'] = 'hello' 两个参数。

访问如下地址:

http://think.user.domain.com/Index/index

访问User模块,并隐式传入 $_GET['status'] = 1$_GET['name'] = 'think' 两个参数。

在配置传入参数的时候,如果需要使用当前的泛域名作为参数,可以直接设置为“*”即可。

目前只支持二级域名和三级域名的泛域名部署。

IP访问部署

可以为某些模块配置IP访问规则,例如:

'APP_SUB_DOMAIN_DEPLOY'   =>    1, // 开启子域名配置
'APP_SUB_DOMAIN_RULES'    =>    array(   
    '22.56.78.9'  => 'Admin',  // 22.56.78.9指向Admin模块
),

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)