框架原理之加载控制器

Posted xiaobingch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框架原理之加载控制器相关的知识,希望对你有一定的参考价值。

目录结构:

技术图片

补充基类: coreMyFrame.php

<?php

namespace  core;

class MyFrame
{
    public static $classMap  = [];
    static function run()
    {
        p(‘ok‘);
        $route = new corelibRoute();
        $ctrlClass = $route->controller;
        $action = $route->action;
        //1.控制器文件路径
        $ctrlFile = APP.‘/controller/‘.$ctrlClass.‘Controller.php‘;
        //2.控制器类(含namespace)
        $ctrlClassNp = ‘‘.MODULE.‘controller‘.$ctrlClass.‘Controller‘;
        if (is_file($ctrlFile)) {
                $index = new $ctrlClassNp();
                $index->$action();
        } else {
            throw new Exception(‘找不到控制器‘.$ctrlClass);
        }

    }

    static function load($class)
    {
        if(isset(self::$classMap[$class])) {
            return true;
        } else {
            $file = MYFRAME.‘/‘.str_replace(‘‘,‘/‘,$class).‘.php‘;
            if (is_file($file)) {
                require_once $file;
                self::$classMap[$class] = $class;
            } else {
                return false;
            }
        }

    }
}

入口文件定义MODULE index.php

<?php
header("Content-type: text/html; charset=utf-8");
/*
 * 入口文件
 * 1.定义常量
 * 2.加载函数库
 * 3.启动框架
 */
//定义框架根目录
define(‘MYFRAME‘,__DIR__);
//定义框架核心目录
define(‘CORE‘,MYFRAME.‘/core‘);
//定义应用目录
define(‘APP‘,MYFRAME.‘/app‘);
//定义应用模块
define(‘MODULE‘,‘app‘);
//定义是否开启调试模式
define(‘DEBUG‘,1);

if (DEBUG) {
    ini_set("display_errors", "On");
} else {
    ini_set(‘display_errors‘,‘Off‘);
}
//引入框架核心函数库
include_once CORE.‘/common/functions.php‘;
//引入框架核心类库
include_once CORE.‘/MyFrame.php‘;

//注册自动加载类
spl_autoload_register("coreMyFrame::load");

//运行框架
coreMyframe::run();

新建控制器 appcontrollerIndexController.php

<?php

namespace appcontroller;


class IndexController
{
    public function index()
    {
        echo "It‘s Index控制器下的index2方法";
        var_dump($_GET);
    }
}

 

以上是关于框架原理之加载控制器的主要内容,如果未能解决你的问题,请参考以下文章

框架原理之加配置加载类

jQuery 是如何判断HTML页面加载完毕的?它的原理是啥?

框架原理之路由

Android之图片加载框架Fresco基本使用

Struts2工作原理和核心文件

MapReduce框架原理