框架原理之加载控制器
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);
}
}
以上是关于框架原理之加载控制器的主要内容,如果未能解决你的问题,请参考以下文章