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

Posted cbw7172002

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始写自己的PHP框架系列教程[App.php]相关的知识,希望对你有一定的参考价值。

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

APP.php的这个类所在路径:根目录frameworkApp.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]的主要内容,如果未能解决你的问题,请参考以下文章

从零开始写一个微前端框架-沙箱篇

从零开始写一个微前端框架-沙箱篇

《从零开始,学会Python爬虫不再难!!!》系列导航(持续更新中)

《从零开始,学会Python爬虫不再难!!!》系列导航(持续更新中)

自己动手从零写桌面操作系统GrapeOS系列教程——18.外设和IO

手把手教你从零写一个简单的 VUE