码迷,mamicode.com
首页 > 移动开发 > 详细

从零开始写自己的PHP框架系列教程(二)[App.php]

时间:2018-11-02 11:15:33      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:isp   code   time   throw   rewrite   epo   spl   except   ini   

从这一个文件开始以后加载的均以类加载,请注意命名空间和所在文件的路径

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]

标签:isp   code   time   throw   rewrite   epo   spl   except   ini   

原文地址:https://www.cnblogs.com/cbw7172002/p/9894787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!