欢迎光临散文网 会员登陆 & 注册

framework.class.php

2023-03-16 11:53 作者:Sweet_Kiko  | 我要投稿

<?php
/**
* 框架基础类
*/
class framework{
  public function runApp(){
     $this->loadConfig();        //加载配置
     $this->registerAutoLoad();  //注册自动加载方法
     $this->getRequestParams();  //获得请求参数
     $this->dispatch();          //请求分发
  }
  /**
   * 注册自动加载方法
   */
  private function registerAutoLoad(){
     spl_autoload_register(array($this,'user_autoload'));
  }
  /**
   * 自动加载方法
   * $param $class_name string 类名
   */
  public function user_autoload($class_name){
     //定义基础类列表
     $base_classes = array(
        //类名 => 所在位置  
        'model'          => './framework/model.class.php',
        'MySQLPDO'    => './framework/MySQLPDO.class.php',
           'page'=>'./framework/page.class.php',
     );
     //依次判断 基础类、模型类、控制器类
     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';
  }
  /**
   * 获取请求参数,p=平台 c=控制器 a=方法
   */
  private function getRequestParams(){
     //当前平台
     define('PLATFORM', isset($_GET['p']) ? $_GET['p'] : $GLOBALS['config']['app']['default_platform']);
     //得到当前控制器名
     define('CONTROLLER', isset($_GET['c']) ? $_GET['c'] : $GLOBALS['config'][PLATFORM]['default_controller']);
     //当前方法名
     define('ACTION', isset($_GET['a']) ? $_GET['a'] : $GLOBALS['config'][PLATFORM]['default_action']);
  }
  /**
   * 请求分发
   */
  private function dispatch(){
     //实例化控制器
     $controller_name = CONTROLLER.'Controller';
     $controller = new $controller_name;
     //调用当前方法
     $action_name = ACTION . 'Action';
     $controller->$action_name();
  }
}


framework.class.php的评论 (共 条)

分享到微博请遵守国家法律