CC----FRAMEWORK FOR PHP

本文介绍了CC框架的初始化过程及运行机制,包括全局配置加载、URL常量化设置、类的自动加载等关键技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CC 框架

初始化

$GLOBALS['CONF'] = include ROOT . 'config\config.php';

//开启session
if($GLOBALS['CONF']['SESSION_START']) session_start();

//设置默认字符编码, 设置时区
header('content-type:text/html; charset=' . $GLOBALS['CONF']['DEFAULT_CHARSET']);
date_default_timezone_set($GLOBALS['CONF']['DEFAULT_TIMEZONE']);

//打开php 的错误显示
if($GLOBALS['CONF']['DEBUG']){
    ini_set('display_error', 'On');
}else {
    ini_set('display_error', 'Off');
}

//服务器时间
define('TIME', $_SERVER['REQUEST_TIME']);


/* ========================================================================
 * URL 常量化设置平台,模块. 默认为前台,当传参为admin 则选择平台为后台
 * ======================================================================== */
if($_SERVER['HTTP_HOST'] == 'admin.framework.com'){
    $p = 'admin';
} else {
    $p = 'home';
}
define("PLAT", $p);                                    //平台


/* ========================================================================
 * URL 常量化设置 程序包路径
 * ======================================================================== */
define("APP", ROOT . 'app' . DS);                      //程序包(前后台)的完整路径
define("PLAT_PATH", APP . PLAT . DS);                  //后台完整路径
define("CTRL_PATH", PLAT_PATH . 'controller' . DS);    //当前控制器所在完整路径
define("MODEL_PATH", PLAT_PATH . 'model' . DS);        //当前模型所在完整路径
define("VIEW_PATH", PLAT_PATH . 'view' . DS);          //当前视图所在完整路径





/* ========================================================================
 * 加载公共函数库, 框架加载文件,用于引导框架启动
 * ======================================================================== */
include FRAMEWORK . 'base\function.php';
include FRAMEWORK . 'base\Route.php';
include FRAMEWORK . 'CC.php';             //核心库

//当我们new 的类不存在的时候,就调用这个类, 并运行run 方法
spl_autoload_register('CC::autoload');
CC::run();

CC

<?php

/* ========================================================================
 * CC 框架类
 * 主要功能:加载所需要的类
 * ======================================================================== */

/**
 * Class CC
 */
class CC
{
    public static $classMap = array();
    public $assign = array();

    /**
     * 运行预约加载类
     */
    static public function run()
    {
        $route = new Route();   //new 的类不存是会调用load 加载该类

        $controller = $route->controller;
        $action = $route->action;

        //找到对应控制器
        $controllerFile = CTRL_PATH . $controller . "Controller.class.php";

        if (is_file($controllerFile)) {
            include $controllerFile;
            $Controller = $controller . 'Controller';  //拼装controller: Index + Controller
            $Action = $action . 'Action';              //拼装action: Index + Action

            $ctrl = new $Controller();
            $ctrl->$Action();
        } else {
            die('找不到控制器:' . $controller);
        }
    }


    /**
     * 按需加载类
     * @param $class
     * @return bool
     */
    static public function autoload($class)
    {
        // 存放已经实例化的类, 如有已存在直接返回
        if (isset($classMap[$class])) {
            return true;
        } else {
            // 将反斜线转为正斜线: \index\index  ==> index\index  ==> index/index.html
            $file = str_replace('\\', '/', $class);


            // 预加载类
            $base_class = array('DB_PDO', 'ModelFactory', 'Response', 'Page', 'ImgUpload', 'Session');

            // 自动加载类库
            if (in_array($class, $base_class)) {
                if($class === 'DB_PDO' ){
                    $class = 'db/' . $class;
                }else{
                    $class = 'base/' . $class;
                }

                require_once FRAMEWORK . $class . '.class.php';

            }else if(substr($file, -5) == "Model"){

                // 加载:共公model 是在根目录下
                if(file_exists(ROOT .'model'. DS . $class . '.class.php')){
                    require ROOT .'model'. DS . $class . '.class.php';

                } else {
                    // 加载:前后台model
                    if(file_exists(MODEL_PATH . $class . '.class.php')){
                        require MODEL_PATH . $class . '.class.php';
                    }
                }


                self::$classMap[$class] = $class;

            }else if(substr($file, -10) == "Controller"){
                require CTRL_PATH . $class . '.class.php';
                self::$classMap[$class] = $class;

            }else{
                return false;
            }
            die( '已加载文件(CC.php):' . $file);
        }
    }
}

目录

CC/ 框架目录

├── app         应用代码

├── assets      静态文件:images,css,js

├── config      程序配置或数据库配置

├── framework   框架主代码

├── runtime     临时数据目录

├── index.php   入口文件

├── .htaccess   重定向
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值