thinkphp3.2.3 相关
2015-12-16 20:33
639 查看
一、命名空间
实现原理:
autoload自动加载所有的“命名空间\类名”(或类名),根据其是否符合命名空间格式(是否存在“\”)分情况进行处理
1、 若符合命名空间格式,则通过字符串处理取出该命名空间的根命名空间名称,判断其是否为配置文件中规定的根命名空间目录数组中元素,若是,则根据配置文件中配置该跟命名空间目录的路径信息与autoload取出的“命名空间\类名”信息组合出该类文件的路径,引入文件
2、 若不符合命名空间格式,即只取得“类名”,同时配置文件中会有一组相关配置,数组APP_AUTOLOAD_LAYER=> array(“Controller”,”Model”),则将该类名的标志性名称如IndexController中的Controller,DbModel中的Model取出,判断是否属于APP_AUTOLOAD_LAYER,若属于则根据APP_AUTOLOAD_LAYER中相应的元素的路径与已经autoload取得的类名组合出该类文件的路径,引入文件
二、Hook钩子
一个触发机制,实现了在不改变源代码的前提下提升系统的灵活性,Hook类中全是静态方法,其中有唯一静态属性
当系统触发了某个事件,比如app_start事件,TP会找到
三、数据库存储
内置了抽象数据库访问层,支持Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo等数据库,并且采用PDO方式;
支持分布式数据库
四、Runtime
项目运行时目录
项目运行时文件夹自动生成,应用日志目录、应用缓存目录、应用数据目录、应用模板缓存目录都在该文件夹中
五、Catch缓存实现
支持文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache
六、域名部署
完整域名部署
'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模块
),
子域名部署
'APP_SUB_DOMAIN_DEPLOY' => 1,
// 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => 'Admin',
// admin子域名指向Admin模块
'test' => 'Test',
// test子域名指向Test模块
),
IP访问部署
'APP_SUB_DOMAIN_DEPLOY' => 1,
// 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'22.56.78.9' => 'Admin',
// 22.56.78.9指向Admin模块
),
实现原理:
autoload自动加载所有的“命名空间\类名”(或类名),根据其是否符合命名空间格式(是否存在“\”)分情况进行处理
1、 若符合命名空间格式,则通过字符串处理取出该命名空间的根命名空间名称,判断其是否为配置文件中规定的根命名空间目录数组中元素,若是,则根据配置文件中配置该跟命名空间目录的路径信息与autoload取出的“命名空间\类名”信息组合出该类文件的路径,引入文件
2、 若不符合命名空间格式,即只取得“类名”,同时配置文件中会有一组相关配置,数组APP_AUTOLOAD_LAYER=> array(“Controller”,”Model”),则将该类名的标志性名称如IndexController中的Controller,DbModel中的Model取出,判断是否属于APP_AUTOLOAD_LAYER,若属于则根据APP_AUTOLOAD_LAYER中相应的元素的路径与已经autoload取得的类名组合出该类文件的路径,引入文件
二、Hook钩子
一个触发机制,实现了在不改变源代码的前提下提升系统的灵活性,Hook类中全是静态方法,其中有唯一静态属性
$tags,他是一个数组,键为绑定的事件,值为绑定的行为。
当系统触发了某个事件,比如app_start事件,TP会找到
Hook::listen方法,该方法会查找$tags中有没有绑定app_start事件的方法,然后用foreach遍历$tags属性,并执行
Hook:exec方法,执行该插件
三、数据库存储
内置了抽象数据库访问层,支持Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo等数据库,并且采用PDO方式;
支持分布式数据库
四、Runtime
项目运行时目录
项目运行时文件夹自动生成,应用日志目录、应用缓存目录、应用数据目录、应用模板缓存目录都在该文件夹中
五、Catch缓存实现
支持文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache
六、域名部署
完整域名部署
'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模块
),
子域名部署
'APP_SUB_DOMAIN_DEPLOY' => 1,
// 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'admin' => 'Admin',
// admin子域名指向Admin模块
'test' => 'Test',
// test子域名指向Test模块
),
IP访问部署
'APP_SUB_DOMAIN_DEPLOY' => 1,
// 开启子域名配置
'APP_SUB_DOMAIN_RULES' => array(
'22.56.78.9' => 'Admin',
// 22.56.78.9指向Admin模块
),
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- 解析thinkphp中的M()与D()方法的区别
- ThinkPHP采用模块和操作分析
- Thinkphp模板中使用自定义函数的方法
- linux下使用ThinkPHP需要注意大小写导致的问题
- ThinkPHP中FCKeditor编辑器的使用方法
- thinkphp的CURD和查询方式介绍
- THINKPHP支持YAML配置文件的设置方法
- Thinkphp中import的几个用法详细介绍
- 浅谈thinkphp的实例化模型
- ThinkPHP控制器里javascript代码不能执行的解决方法
- ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法