您的位置:首页 > 编程语言 > PHP开发

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类中全是静态方法,其中有唯一静态属性
$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模块
    ),

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp