framework.class.php
<?php
/**
* 框架基礎(chǔ)類
*/
class framework{
? public function runApp(){
? ? ?$this->loadConfig(); ? ? ? ?//加載配置
? ? ?$this->registerAutoLoad(); ?//注冊(cè)自動(dòng)加載方法
? ? ?$this->getRequestParams(); ?//獲得請(qǐng)求參數(shù)
? ? ?$this->dispatch(); ? ? ? ? ?//請(qǐng)求分發(fā)
? }
? /**
? ?* 注冊(cè)自動(dòng)加載方法
? ?*/
? private function registerAutoLoad(){
? ? ?spl_autoload_register(array($this,'user_autoload'));
? }
? /**
? ?* 自動(dòng)加載方法
? ?* $param $class_name string 類名
? ?*/
? public function user_autoload($class_name){
? ? ?//定義基礎(chǔ)類列表
? ? ?$base_classes = array(
? ? ? ? //類名 => 所在位置 ?
? ? ? ? 'model' ? ? ? ? ?=> './framework/model.class.php',
? ? ? ? 'MySQLPDO' ? ?=> './framework/MySQLPDO.class.php',
? ? ? ? ? ?'page'=>'./framework/page.class.php',
? ? ?);
? ? ?//依次判斷 基礎(chǔ)類、模型類、控制器類
? ? ?if (isset($base_classes[$class_name])){
? ? ? ? require $base_classes[$class_name];
? ? ?}elseif (substr($class_name,-5) == 'Model'){
? ? ? ? require './application/'.PLATFORM."/model/{$class_name}.class.php";
? ? ?}elseif (substr($class_name, -10) == 'Controller'){
? ? ? ? require './application/'.PLATFORM."/controller/{$class_name}.class.php";
? ? ?}
? }
? /**
? ?* 載入配置文件
? ?*/
? private function loadConfig(){
? ? ?//使用全局變量保存配置
? ? ?$GLOBALS['config'] = require './application/config/app.conf.php';
? }
? /**
? ?* 獲取請(qǐng)求參數(shù),p=平臺(tái) c=控制器 a=方法
? ?*/
? private function getRequestParams(){
? ? ?//當(dāng)前平臺(tái)
? ? ?define('PLATFORM', isset($_GET['p']) ? $_GET['p'] : $GLOBALS['config']['app']['default_platform']);
? ? ?//得到當(dāng)前控制器名
? ? ?define('CONTROLLER', isset($_GET['c']) ? $_GET['c'] : $GLOBALS['config'][PLATFORM]['default_controller']);
? ? ?//當(dāng)前方法名
? ? ?define('ACTION', isset($_GET['a']) ? $_GET['a'] : $GLOBALS['config'][PLATFORM]['default_action']);
? }
? /**
? ?* 請(qǐng)求分發(fā)
? ?*/
? private function dispatch(){
? ? ?//實(shí)例化控制器
? ? ?$controller_name = CONTROLLER.'Controller';
? ? ?$controller = new $controller_name;
? ? ?//調(diào)用當(dāng)前方法
? ? ?$action_name = ACTION . 'Action';
? ? ?$controller->$action_name();
? }
}