您的位置:首页 > 编程语言 > PHP开发

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

  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码分析 phpcms cms