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 重定向