thinkphp3.2.3 相关
一、命名空间
实现原理:
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模块
),