phpcms源码跟踪(1)
本次跟踪解决几个问题:
1、缓存文件从哪里来,过程中被删除了怎么办
2、模板html是如何被引入的
进入首页时,通过最初的调用,进入控制器\phpcms\modules\content\index.php::init()中
//首页
public function init() {
    if(isset($_GET['siteid'])) {
$siteid = intval($_GET['siteid']);//当前站点id 函数intval作用变量转成整数类型
    } else {
$siteid = 1;
}
$siteid = $GLOBALS['siteid'] = max($siteid,1);
    define('SITEID', $siteid);
$_userid = $this->_userid;
$_username = $this->_username;
$_groupid = $this->_groupid;
//SEO 搜索引擎优化信息
$SEO = seo($siteid);//SEO 搜索引擎优化信息
    $sitelist  = getcache('sitelist','commons');//缓存后台设置的所有站点配置信息
$default_style = $sitelist[$siteid]['default_style'];//当前站点默认模板风格配置
    $CATEGORYS = getcache('category_content_'.$siteid,'commons');//当前站点所有栏目详细配置信息
    include template('content','index',$default_style);//调用第三步:模板调用
}
$siteid=1
$path.$classname=libs\classescache_factory
public function get()中
$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/'=C:\phpwork\bangth_com\src\caches\caches_commons/caches_data/
$filename=sitelist.cache.php
$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/'=C:\phpwork\bangth_com\src\caches\caches_commons/caches_data/
$filename=category_content_1.cache.php
通过
$data = @require($filepath.$filename);获取缓存中的数据
即
$CATEGORYS = getcache('category_content_'.$siteid,'commons');获取到栏目数据
function template($module = 'content', $template = 'index', $style = 'default')中
$compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php'
=C:\phpwork\bangth_com\src\caches\caches_template\default\content\index.php
PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html'
=C:\phpwork\bangth_com\src\phpcms\templates\default\content\index.html
public function template_compile('content', 'index', $style = 'default')完成根据模板编译成php文件的过程
$tplfile=C:\phpwork\bangth_com\src\phpcms\templates\default\content\index.html
NB的是通过
public function template_parse($str)
将html模板文件转化为php文件
转化完成后通过之前
public function init()函数中最后一行:include调用生成的\caches\caches_template\default\content\index.php
phpcms源码跟踪(1)的更多相关文章
- 1  weekend110的hdfs源码跟踪之打开输入流  +  hdfs源码跟踪之打开输入流总结
		3种形式的元数据,fsimage是在磁盘上,meta.data是在内存上, 我们继续,前面呢,断点是打在这一行代码处, FileSystem fs = FileSystem.get(conf); we ... 
- Java关于ReentrantLock获取锁和释放锁源码跟踪
		通过对ReentrantLock获取锁和释放锁源码跟踪主要想进一步深入学习AQS. 备注:AQS中的waitStatus状态码含义: 
- Java源码跟踪阅读技巧
		转:https://www.jianshu.com/p/ab865109070c 本文基于Eclipse IDE 1.Quick Type Hierarchy 快速查看类继承体系. 快捷键:Ctrl ... 
- Thread.interrupt()源码跟踪
		1 JDK源码跟踪 // java.lang.Thread public void interrupt() { if (this != Thread.currentThread()) checkAcc ... 
- spring security之 默认登录页源码跟踪
		spring security之 默认登录页源码跟踪  2021年的最后2个月,立个flag,要把Spring Security和Spring Security OAuth2的应用及主流程源码研究透 ... 
- spring security 之自定义表单登录源码跟踪
		 上一节我们跟踪了security的默认登录页的源码,可以参考这里:https://www.cnblogs.com/process-h/p/15522267.html 这节我们来看看如何自定义单表认 ... 
- spring security 认证源码跟踪
		spring security 认证源码跟踪  在跟踪认证源码之前,我们先根据官网说明一下security的内部原理,主要是依据一系列的filter来实现,大家可以根据https://docs.sp ... 
- spring security 授权方式(自定义)及源码跟踪
		spring security 授权方式(自定义)及源码跟踪  这节我们来看看spring security的几种授权方式,及简要的源码跟踪.在初步接触spring security时,为了实现它的 ... 
- Hibernate 5.x 生成 SessionFactory 源码跟踪分析
		我们要使用 Hibernate 的功能,首先需要读取 Hibernate 的配置文件,根据配置启动 Hibernate ,然后创建 SessionFactory. 创建 SessionFactory ... 
随机推荐
- 新型Web劫持技术
			该类新型Web劫持是利用script脚本实现的.在已知的案例中,黑客入侵了某地方门户网站,篡改了该网站的新闻页面,并向这些页面植入自己的广告.新闻及恶意代码.一旦用户从搜索结果页面点击进入被篡改过的新 ... 
- 从物理执行的角度透视spark Job
			本博文主要内容: 1.再次思考pipeline 2.窄依赖物理执行内幕 3.宽依赖物理执行内幕 4.Job提交流程 一:再次思考pipeline 即使采用pipeline的方式,函数f对依赖的RDD中 ... 
- 杭电 1795 The least one
			The least one Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ... 
- Codeforces Round #363 (Div. 2)  698B  Fix a Tree
			D. Fix a Tree time limit per test 2 seconds memory limit per test 256 megabytes A tree is an und ... 
- 【Android - 框架】之Retrofit的使用
			Retrofit是Square公司发布的一个可以应用在Android和Java中的Http客户端访问框架,其底层应用的是OkHttp. 在这个帖子中,我们以下面这个Http请求为例: https:// ... 
- toString&&equals方法
			toString&&equals方法 先来看看这个题该怎样做? 分析: 1.java里的三大特性,有封装,继承,多态(方法的重载),super,this等关键字 2.常用的方法,equ ... 
- 【课程分享】Oracle数据库系统project师
			对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 一.本课程是怎么样的一门课程 1.1.课程的背景 该课程是Oracle数据库系统project师培训课程 Oracle Databas ... 
- android 16  带返回值的activity
			main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ... 
- MySQL内存体系架构及参数总结 ---图解
			http://www.cnblogs.com/kissdb/p/4009614.html 内存结构: Mysql 内存分配规则是:用多少给多少,最高到配置的值,不是立即分配 图只做大概参考 全局缓存包 ... 
- hadoop2.2 伪分布式环境
			在安装JDK之前,请确认系统是32还是64,根据系统版本,选择JDK版本.Hadoop版本 下面是以在CentOS-6.5-x86_64系统上安装为例 安装前准备 在"/usr"下 ... 
