從零開始寫自己的PHP框架系列教程(二)[App.php]
阿新 • • 發佈:2018-11-02
porting col config exce tro efault fig 默認 clas
從這一個文件開始以後加載的均以類加載,請註意命名空間和所在文件的路徑
APP.php的這個類所在路徑:根目錄\framework\App.php
直接上代碼
namespace framework; class App { /** * 初始化配置 * @Author yiwanxifan */ static protected function init() { Config::init( ROOT_PATH ); Config::loadConfig( CONFIG_PATH . ‘global.php‘ ); Config::loadConfig( CONFIG_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); } include_once ROOT_PATH.‘data/version.php‘; } /** * 運行框架 * @Author yiwanxifan */ static public function run() { try{ self::init(); Hook::init(ROOT_PATH); Hook::listen(‘appBegin‘); Hook::listen(‘routeParseUrl‘, array( Config::get(‘REWRITE_RULE‘), Config::get(‘REWRITE_ON‘))); //默認路由設置 if( !defined(‘APP_NAME‘) || !defined(‘CONTROLLER_NAME‘) || !defined(‘ACTION_NAME‘)){ Route::parseUrl( Config::get(‘REWRITE_RULE‘), Config::get(‘REWRITE_ON‘) ); } $controller = ‘\app\\‘. APP_NAME .‘\\‘. CONTROLLER_NAME;$action = ACTION_NAME; if( !class_exists($controller) ) { throw new \Exception("Controller ‘{$controller}‘ not found", 404); } $obj = new $controller(); 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‘); } }
代碼裏面的Config.php和Hook.php跟App.php 在同一個目錄
Config.php為配置文件
Hook.php為鉤子文件(什麽叫鉤子文件,說白了就是在程序的運行當中調用其他鉤子的一個類)
從零開始寫自己的PHP框架系列教程(二)[App.php]