您现在的位置是:首页 > 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品牌连锁店招商加盟商机网站模版源码
图文教程
常用phpcms语法总结记录
到目前为止用到过的phpcms语法:1、取栏目名称:2、取栏目地址:3、取一级栏目:4、取带二级栏目的导航:6、判断是否为首页?
phpcms源码解析模板引擎
简介:这是phpcms 源码解析模板引擎的详细页面,介绍了和php,phpcms, php phpcms源码解析模板引擎有关的知识、技巧、经验,和一些php源码等。
PHPCMS二次开发方法指南
PHPCMS本身功能已经很完善,自带的模块可用可不用,松耦合特性使其非常适合企业的二次开发。PC的默认路由在phpcms/caches/configs/route.php中定义
phpcms表单提交或页面路径跳转代码示例
表单提交或页面路径跳转可用'{APP_PATH}index.php?m=member&c=index&a=register&siteid={$siteid}'路径来进行跳转,路由规则同网页相同
相关源码
-
(自适应)营销型健身器材产品设备类pbootcms模板网站为健身器材企业打造的营销型网站模板,基于PbootCMS开源内核开发。采用HTML5响应式架构,PC与移动端数据实时同步,适配多终端展示场景。查看源码 -
(自适应响应式)化妆美容口红唇膏化妆品模板pbootcms源码下载基于PbootCMS开发的响应式模板,为化妆品品牌、美容机构打造,通过优雅的视觉呈现提升产品展示效果与品牌调性。采用时尚杂志排版风格,色卡系统规范产品展示。微交互动画增强用户体验,智能推荐算法提升产品关联展示效果。查看源码 -
(自适应响应式)HTML5幕墙装饰工程建筑装修公司pbootcms模板下载基于PbootCMS开发的响应式模板,为幕墙工程、建筑装饰企业设计,通过数字化展示提升企业专业形象与项目展示能力。结构化数据标记增强项目案例收录,智能URL路由优化,支持每个工程案例独立设置关键词与描述查看源码 -
(PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码 -
(PC+WAP)绿色硅胶橡胶玩具制品营销型网站源码下载为硅胶橡胶制品及玩具行业打造的营销型网站模板,采用PbootCMS内核开发,通过模块化设计实现产品参数、安全认证、应用场景等专业内容的可视化呈现,助力企业建立可信赖的线上展示平台。查看源码 -
(PC+WAP)盆栽绿植观赏植物花卉租赁免费pbootcms网站模板为花卉盆栽租赁、园林绿化企业打造的PbootCMS网站模板,采用较新内核开发,PC与移动端数据实时同步。通过清新自然的视觉设计,精准展现植物养护、花卉展示等业务场景,帮助用户快速建立专业级行业网站。查看源码
| 分享笔记 (共有 篇笔记) |
