phpcms v9 代码分析笔记1
2015-09-25 11:14
766 查看
1.前台页面的入口在 index.php
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
//加载系统基类
include PHPCMS_PATH.'/phpcms/base.php';
//调用base 的creat_app()
pc_base::creat_app();
ps: 文件只有三行代码: 定义路径 包含基类文件base.php 调用base.php文件里面的creat_app方法
2.creat_app方法 直接调用了同类的:load_sys_class 方法 没有其他操作了
load_sys_class方法又调用了同类的_load_class方法
public static function creat_app() {
return self::load_sys_class('application');
}
public static function load_sys_class($classname, $path = '', $initialize = 1) {
return self::_load_class($classname, $path, $initialize);
}
3._load_class方法
private static function _load_class($classname, $path = '', $initialize = 1) {
static $classes = array();
//默认路径 phpcms/libs/classes
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;
// my_path 方法判断是否有扩展文件,有就 包含扩展文件 更改name
if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
include $my_path;
$name = 'MY_'.$classname;
}
//是否是初始化 初始化 new 下,
if ($initialize) {
$classes[$key] = new $name;
} else {
$classes[$key] = true;
}
return $classes[$key];
} else {
return false;
}
}
/**
* 是否有自己的扩展文件
* @param string $filepath 路径
*/
public static function my_path($filepath) {
$path = pathinfo($filepath);
if (file_exists($path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'])) {
return $path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'];
} else {
return false;
}
}
ps: _load_class作用:判断之前是否已经包含过了这个文件,如果文件存在并且之前没有 include就 include,
包含之后顺便看下有这个文件有没有扩展文件,方法为my_path(),扩展方法前缀是my_,
如果有这个文件,也include
5.前面走完就是直接包含了 //默认路径 phpcms/libs/classes/application文件
//pplication.class.php PHPCMS应用程序创建类
6.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();
}
加载了param类
通过方法 获得mca content index init
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
//加载系统基类
include PHPCMS_PATH.'/phpcms/base.php';
//调用base 的creat_app()
pc_base::creat_app();
ps: 文件只有三行代码: 定义路径 包含基类文件base.php 调用base.php文件里面的creat_app方法
2.creat_app方法 直接调用了同类的:load_sys_class 方法 没有其他操作了
load_sys_class方法又调用了同类的_load_class方法
public static function creat_app() {
return self::load_sys_class('application');
}
public static function load_sys_class($classname, $path = '', $initialize = 1) {
return self::_load_class($classname, $path, $initialize);
}
3._load_class方法
private static function _load_class($classname, $path = '', $initialize = 1) {
static $classes = array();
//默认路径 phpcms/libs/classes
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;
// my_path 方法判断是否有扩展文件,有就 包含扩展文件 更改name
if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
include $my_path;
$name = 'MY_'.$classname;
}
//是否是初始化 初始化 new 下,
if ($initialize) {
$classes[$key] = new $name;
} else {
$classes[$key] = true;
}
return $classes[$key];
} else {
return false;
}
}
/**
* 是否有自己的扩展文件
* @param string $filepath 路径
*/
public static function my_path($filepath) {
$path = pathinfo($filepath);
if (file_exists($path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'])) {
return $path['dirname'].DIRECTORY_SEPARATOR.'MY_'.$path['basename'];
} else {
return false;
}
}
ps: _load_class作用:判断之前是否已经包含过了这个文件,如果文件存在并且之前没有 include就 include,
包含之后顺便看下有这个文件有没有扩展文件,方法为my_path(),扩展方法前缀是my_,
如果有这个文件,也include
5.前面走完就是直接包含了 //默认路径 phpcms/libs/classes/application文件
//pplication.class.php PHPCMS应用程序创建类
6.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();
}
加载了param类
通过方法 获得mca content index init
相关文章推荐
- 试用Kesion CMS 4.0商城版 商业版
- 基于php的CMS中展示文章类实例分析
- CMS不要让MySQL为你流泪
- PHPCMS的使用小结
- 解决phpcms更换javascript的幻灯片代码调用图片问题
- phpcms手机内容页面添加上一篇和下一篇
- 30 个很棒的PHP开源CMS内容管理系统小结
- 几款免费开源的不用数据库的php的cms
- 使用PHPCMS搭建wap手机网站
- linux服务器下PHPCMS v9 安全配置详解
- 摘自织梦CMS中的图片处理类
- java开源内容管理系统 J4CMS增加新样式
- 【OSChina-MoPaaS应用开发大赛】JeeSite(JES)
- 帝国CMS的搜索表单语法规则
- 帝国CMS循环子栏目标签listsonclass介绍
- 如何使用帝国CMS自带的数据库类
- 如何使用帝国CMS的灵动标签e:loop
- 帝国CMS listshowclass循环栏目标签
- 如何让帝国CMS显示头条/置顶/推荐等标记