您现在的位置是:首页 > 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万能字段的使用方法教程
今天想做一个单选的字段,里面要使用别的字段,于是研究了一下万能字段!刚开始使用的时候,在网上,论坛?伊撕镁?没发现一个贴子有针对万能字段的使用说明。
phpcms二次开发目录结构和函数修改教程
PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
phpcms不能删除栏目的修改方法
phpcms不能删除栏目是因为站点管理员没有删除栏目的权限,其解决办法:首先找到并打开“admin.class.php”文件;然后添加站点管理员的删除栏目权限;最后修改
相关源码
-
(自适应响应式)投资理财金融机构财务管理pbootcms模板本模板基于PbootCMS系统开发,为投资理财、金融机构等行业设计。采用专业严谨的布局风格,突出金融服务行业特色,适合展示各类理财产品、投资服务和金融资讯。查看源码 -
(自适应)中英文双语外贸扬声器音响喇叭话筒网站模板免费下载为音响设备外贸企业设计的中英文双语网站模板,基于PbootCMS内核开发。适配扬声器系统、音频设备等产品的国际化展示需求查看源码 -
(自适应响应式)教育培训机构集团网站pbootcms源码下载本模板基于PbootCMS系统开发,为教育培训机构设计,特别适合展示课程体系、师资团队和教学成果。采用响应式技术,确保在各类设备上都能提供良好的浏览体验。查看源码 -
pbootcms源码宠物类网站源码下载(自适应多端)为宠物装备商店、宠物食品及用品企业打造的营销型模板,基于PbootCMS内核深度开发。采用响应式设计实现PC与移动端适配,PHP7.0+高性能架构支持MySQL/SQLite双数据库查看源码 -
(自适应响应式)法律咨询律师事务所法务pbootcms源码下载为律师事务所、法律咨询机构设计,特别适合展示法律服务、律师团队和成功案例。采用响应式技术,确保在不同设备上都能提供专业的法律信息展示和咨询服务。查看源码 -
(自适应响应式)房产合同知识产权企业管理pbootcms模板下载本模板基于PbootCMS系统开发,为知识产权服务、法律咨询及企业合同管理等行业设计。采用严谨专业的布局风格,突出法律文书与知识产权服务行业特色,适合展示各类法律服务和知识产权相关内容。查看源码
| 分享笔记 (共有 篇笔记) |
