1. 程式人生 > >從零開始寫自己的PHP框架系列教程(二)[App.php]

從零開始寫自己的PHP框架系列教程(二)[App.php]

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]