You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.1 KiB
77 lines
2.1 KiB
<?php
|
|
|
|
/**
|
|
* 应用启动
|
|
*/
|
|
|
|
namespace base;
|
|
|
|
class App {
|
|
|
|
/**
|
|
* 初始化配置
|
|
*/
|
|
static protected function init() {
|
|
Config::init( ROOT_PATH );
|
|
Config::loadConfig( CONF_PATH . 'global.php' );
|
|
Config::loadConfig( CONF_PATH . Config::get('ENV') . '.php' );
|
|
date_default_timezone_set( Config::get('TIMEZONE') );
|
|
|
|
//error display
|
|
if ( Config::get('DEBUG') ) {
|
|
ini_set("display_errors", 1);
|
|
error_reporting( E_ALL ^ E_NOTICE );
|
|
} else {
|
|
ini_set("display_errors", 0);
|
|
error_reporting(0);
|
|
}
|
|
|
|
// 加载系统基础函数库
|
|
require dirname(__FILE__).'/helpers/function.php';
|
|
}
|
|
|
|
/**
|
|
* 运行框架
|
|
*/
|
|
static public function run() {
|
|
try{
|
|
self::init();
|
|
|
|
Hook::init(BASE_PATH);
|
|
Hook::listen('appBegin');
|
|
|
|
Hook::listen('routeParseUrl', array( Config::get('REWRITE_RULE'), Config::get('REWRITE_ON')));
|
|
|
|
//default route
|
|
if( !defined('APP_NAME') || !defined('CONTROLLER_NAME') || !defined('ACTION_NAME')){
|
|
Route::parseUrl( Config::get('REWRITE_RULE'), Config::get('REWRITE_ON') );
|
|
}
|
|
|
|
//execute action
|
|
$controller = '\apps\\'. APP_NAME .'\controllers\\'. ucfirst(CONTROLLER_NAME) .'Controller';
|
|
$action = Config::get('ACTION_PREFIX') . ucfirst(ACTION_NAME);
|
|
|
|
$MY_controller = '\apps\\'. APP_NAME .'\controllers\\MY_'. ucfirst(CONTROLLER_NAME) .'Controller';
|
|
$MY_action = 'MY_'. ucfirst(ACTION_NAME);
|
|
$controller = class_exists($MY_controller) ? $MY_controller : $controller;
|
|
|
|
if( !class_exists($controller) ) {
|
|
throw new \Exception("Controller '{$controller}' not found", 404);
|
|
}
|
|
$obj = new $controller();
|
|
$action = method_exists($obj, $MY_action) ? $MY_action : $action;
|
|
if( !method_exists($obj, $action) ){
|
|
throw new \Exception("Action '{$controller}::{$action}()' not found", 404);
|
|
}
|
|
|
|
Hook::listen('actionBefore', array($obj, $action));
|
|
$obj ->$action();
|
|
Hook::listen('actionAfter', array($obj, $action));
|
|
|
|
} catch(\Exception $e){
|
|
Hook::listen('appError', array($e));
|
|
}
|
|
|
|
Hook::listen('appEnd');
|
|
}
|
|
}
|