您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcms源码结构分析
丁倍卫2025-05-16phpcms教程已有人查阅
导读一、首先是一个index.phpPHPCMS 入口 。统一入口文件。dirname(__FILE__) 函数返回的是脚本所在在的路径DIRECTORY_SEPARATOR是一个显示系统分隔符的命令,是php内置常量
一、首先是一个index.php
PHPCMS 入口 。统一入口文件。
dirname(__FILE__) 函数返回的是脚本所在在的路径
DIRECTORY_SEPARATOR是一个显示系统分隔符的命令,是php内置常量
include PHPCMS_PATH.'/phpcms/base.php'
直接包含服务器路径然后加上/phpcms/文件夹下的base.php文件----》执行分支出现1,这里base.php文件要开始执行
_load_class()执行过程中包含了libs文件夹下application.class.php文件表好处代码
同时执行init()函数,init()函数调用load_controller()
load_controller函数可以根据参数不同跳转到modules文件夹下去进行包含文件------》执行分支出现3,根据参数不太包含文件
PHPCMS 入口 。统一入口文件。
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
include PHPCMS_PATH.'/phpcms/base.php';
pc_base::creat_app();
解释dirname(__FILE__) 函数返回的是脚本所在在的路径
DIRECTORY_SEPARATOR是一个显示系统分隔符的命令,是php内置常量
include PHPCMS_PATH.'/phpcms/base.php'
直接包含服务器路径然后加上/phpcms/文件夹下的base.php文件----》执行分支出现1,这里base.php文件要开始执行
pc_base::creat_app();
base.php文件调用creat_app();
public static function creat_app() {
return self::load_sys_class('application');
}
这里load_sys_class()又调用了_load_class()_load_class()执行过程中包含了libs文件夹下application.class.php文件表好处代码
public static function load_sys_class($classname, $path = '', $initialize = 1) {
return self::_load_class($classname, $path, $initialize);
}
private static function _load_class($classname, $path = '', $initialize = 1) {
static $classes = array();
if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';
$key = md5($path.$classname);
if (isset($classes[$key])) {
if (!empty($classes[$key])) {
return $classes[$key];
} else {
return true;
}
}
if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';
$name = $classname;
if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
include $my_path;
$name = 'MY_'.$classname;
}
if ($initialize) {
$classes[$key] = new $name;
} else {
$classes[$key] = true;
}
return $classes[$key];
} else {
return false;
}
}
上面执行的结果就是包含libs文件夹下的application.class.php ,然后再包含 param.class.php-----》执行分支出现2,又有两个文件加载进去同时执行init()函数,init()函数调用load_controller()
load_controller函数可以根据参数不同跳转到modules文件夹下去进行包含文件------》执行分支出现3,根据参数不太包含文件
class application {
/**
* 构造函数
*/
public function __construct() {
$param = pc_base::load_sys_class('param');
define('ROUTE_M', $param->route_m());
define('ROUTE_C', $param->route_c());
define('ROUTE_A', $param->route_a());
$this->init();
}
/**
* 调用件事
*/
private function init() {
$controller = $this->load_controller();
if (method_exists($controller, ROUTE_A)) {
if (preg_match('/^[_]/i', ROUTE_A)) {
exit('You are visiting the action is to protect the private action');
} else {
call_user_func(array($controller, ROUTE_A));
}
} else {
exit('Action does not exist.');
}
}
/**
* 加载控制器
* @param string $filename
* @param string $m
* @return obj
*/
private function load_controller($filename = '', $m = '') {
if (empty($filename)) $filename = ROUTE_C;
if (empty($m)) $m = ROUTE_M;
$filepath = PC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.$filename.'.php';
if (file_exists($filepath)) {
$classname = $filename;
include $filepath;
if ($mypath = pc_base::my_path($filepath)) {
$classname = 'MY_'.$filename;
include $mypath;
}
return new $classname;
} else {
exit('Controller does not exist.');
}
}
}
__construct()函数引入 param文件 ,执行文件的三个函数$param->route_m()///模型
$param->route_c()//控制器$param->route_a()//动作事件
文件执行到这里其实已经出现基本的mvc架构也就是 index.php?m=**** & c=*** & a=****链接已经可以根据路由进行下一步的工作了。
本文标签:
很赞哦! ()
上一篇:phpcmsV9怎么添加模块
相关教程
- (响应式)wordpress模板VieuV4.5主题资讯自媒体博客源码
- (自适应多语言)WordPress开源主题MirageV资讯个人博客源码
- WordPress主题模板JustNews资讯博客类源码V5.2.2
- WordPress主题模板主题巴巴/博客X主题源码免费下载
- (PC+手机)帝国cms7.5漫画图片连载网站源码免费下载
- 帝国CMS7.5二次元COS漫展网站模板源码免费下载
- 帝国CMS7.5漫画网站模板带手机端源码免费下载
- 帝国cms7.5游戏门户H5小游戏网站模板源码免费下载
- 帝国CMS7.5H5小游戏模板游戏攻略下载网整站源码
- 帝国cms7.5大型游戏资讯门户网站源码免费下载
- 帝国cms7.5模板情感文学名言名句心情文章类源码下载带手机
- 帝国cms7.5品牌连锁店招商加盟商机网站模版源码
图文教程
phpcmsv9二次开发及使用中问题解决方法示例
phpcms v9二次开发及使用中各种问题解决方案(一)模板调用1、内容标签,序号123456789的调用?{pc:contentaction="lists"catid="$catid"ord...
PHPCMSV9添加二级导航的方法
今天看了看phpcms 写到二级导航时发现点问题,查询导航栏的信息时返回的$r[arrchildid]与自己想象的不符,文档上说是返回子栏目id但是却有些不同。
PHPcms需要用到各种调用代码
1.每个页面开头都需要添加的四句代码。当两个不同的一级栏目共用一个page模板时,各自遍历出各自的一级栏目下的二级栏目时用到的一个相同的遍历方法。
phpcms安装步骤教程
1、利用ftp上传phpcms v9程序到服务器或者是虚拟主机2、阅读授权协议后点击“开始安装按钮3、系统会自动检查环境及文件目录权限,如下图:4、检测
相关源码
-
(PC+WAP)房屋建造建筑工程房地产建材行pbootcms网站模板下载本模板基于PbootCMS内核开发,为房屋建造、建筑工程及房地产建材类企业设计。通过本模板可快速搭建具有行业特色的企业官网,只需替换文字与图片内容即可适配其他行业使用。查看源码 -
(自适应)绿色LED灯具照明灯饰灯光灯泡pbootcms网站源码下载本模板基于PbootCMS内核开发,为LED照明、灯具制造及相关光电技术企业量身打造。设计充分考虑了照明行业的展示需求,从产品陈列到技术说明,从光源展示到工程案例,每一个细节都体现出专业照明行业的特点。查看源码 -
(自适应响应式)装修装潢设计公司网站源码下载本模板为装修设计企业打造,采用PbootCMS内核开发,整体设计突出空间美学与功能性结合。首页采用大图轮播展示工程案例,服务项目模块支持三维效果展示,呈现装修设计企业的专业形象与技术实力。查看源码 -
(自适应响应式)高端家用办公家具家居桌椅pbootcms模板下载为办公家具企业设计的响应式网站模板,涵盖产品展示、案例呈现、企业介绍等核心模块。通过可视化后台可快速发布实木桌椅、系统家具、办公屏风等产品信息,帮助客户直观了解材质参数与空间搭配方案。查看源码 -
粉色家政月嫂保姆公司pbootcms网站模板(PC+WAP)为家政服务、月嫂保姆企业打造的营销型解决方案,基于PbootCMS内核开发,采用温馨粉色主题传递行业温度。PHP7.0+高性能架构支持SQLite/MySQL双数据库查看源码 -
响应式粉色美容整形化妆品pbootcms网站模板开源源码该网站模板为美容整形、化妆品企业设计,采用响应式布局确保在手机、平板及PC端自动适配显示效果。基于PbootCMS内核开发,支持一键替换图文内容快速转换至其他行业应用。查看源码
| 分享笔记 (共有 篇笔记) |
