目录结构:

    

发生改动的类代码:

    新增类:Framework.class.php

 <?php
/**
* Created by PhpStorm.
* User: Interact
* Date: 2017/8/21
* Time: 16:01
*/
class Framework{
/**
* 入口
*/
public static function run() {
//声明路径常量
static::_initPathConst();
//确定分发参数
static::_initDispatchParam();
// 当前平台相关的路径常量
static::_initPlatformPathConst();
// 注册自动加载
self::_initAutoload();
// 请求分发
static::_dispatch();
}
/**
* 声明路径常量
*/
private static function _initPathConst() {
//目录基础常量的定义
//目录地址常量
define('ROOT_PATH',getcwd().'/');
define('APPLICATION_PATH',ROOT_PATH.'application'.'/');
define('FRAMEWORK_PATH',ROOT_PATH.'framework'.'/');
define('TEST_PATH',APPLICATION_PATH.'test'.'/');
define('CONTROLLER_PATH',TEST_PATH.'controller'.'/');
define('MODEL_PATH',TEST_PATH.'model'.'/');
define('VIEW_PATH',TEST_PATH.'view'.'/');
define('TOOL_PATH',FRAMEWORK_PATH.'tool'.'/');
}
/**
* 初始化分发参数
*/
private static function _initDispatchParam() {
// 确定分发参数
// 平台
//确定分发参数
//动作
define('CONTROLLER',isset($_GET['c'])?$_GET['c']:'zixunC');
define('ACTION',isset($_GET['a'])?$_GET['a']:'show');
define("PLATFORM",isset($_GET['p'])?$_GET['p']:'test');
}
/**
* 声明当前平台路径常量
*/
private static function _initPlatformPathConst() {
//当前平台相关的路径常量
define('CURRENT_CONTROLLER_PATH', APPLICATION_PATH . PLATFORM . '/controller/');
define('CURRENT_MODEL_PATH', APPLICATION_PATH . PLATFORM . '/model/');
define('CURRENT_VIEW_PATH', APPLICATION_PATH . PLATFORM . '/view/');
}
/**
* 自动加载方法
*/
public static function userautoload($class_name){ // var_dump($class_name);
//先处理确定的(框架中的核心类)
// 类名与类文件映射数组
$framework_class_list = array(
// '类名' => '类文件地址'
'Controller' => FRAMEWORK_PATH.'Controller.php',
'Model' => FRAMEWORK_PATH.'Model.class.php',
'Factory' => FRAMEWORK_PATH.'Factory.class.php',
'MySQLDB' => FRAMEWORK_PATH.'MySQLDB.class.php',
'SessionDB'=>TOOL_PATH.'SessionDB.class.php',
) ;
// echo "走没走";
//判断是否为核心类
if (isset($framework_class_list[$class_name])) {
//是核心类
require $framework_class_list[$class_name];
}
//判断是否为可增加(控制器类,模型类)
//控制器类,截取后是个字符,匹配Controller
elseif (substr($class_name, -) == 'C') {
// 控制器类, 当前平台下controller目录
require APPLICATION_PATH . PLATFORM . '/controller/' . $class_name . '.controller.class.php';
}
//模型类,截取后5个字符,匹配Model
elseif (substr($class_name, -) == 'Model') {
// 模型类,当前平台下model目录
require APPLICATION_PATH . PLATFORM . '/model/' . $class_name . '.class.php';
} }
/**
* 注册自动加载
*/
private static function _initAutoload() {
spl_autoload_register(array(__CLASS__, 'userAutoload'));
}
/**
* 分发请求
*/
private static function _dispatch() {
require APPLICATION_PATH.PLATFORM.'/controller/'.CONTROLLER.'.controller.class.php';
$controlelr_name=CONTROLLER;
$controller=new $controlelr_name();
$action_name=ACTION;
$controller->$action_name();
}
}

  index.php代码展示:

  

  require './framework/Framework.class.php';
Framework::run();

结果展示:

  

17)将index.php中的代码放到Framework中封装起来的更多相关文章

  1. java 连接接数据库 中的代码 放到配置文件中

    1.DButil.java package com.jobproject.util; import java.sql.Connection;import java.sql.DriverManager; ...

  2. Hibernate查询之SQL查询,查询结果用new新对象的方式接受,hql查询,通过SQL查询的结果返回到一个实体中,查询不同表中内容,并将查到的不同表中的内容放到List中

     package com.ucap.netcheck.dao.impl; import java.util.ArrayList;import java.util.List; import org. ...

  3. 如何在IOS开发中在自己的framework中添加.bunble文件

    今天就跟大家介绍一下有关,如何在IOS开发中在自己的framework中添加.bunble文件,该文章我已经在IOS教程网(http://ios.662p.com)发布过来,个人觉得还是对大家有帮助的 ...

  4. 在Myeclipse中提交代码到GitHub中

    这需要借助插件Egit,首先就是先下载该插件了,可以再eclipse中下载,也可以在外面下载,下载就不说了.下载地址git://github.com/houyongchao/plugin-Egit.g ...

  5. 第二十二篇:在SOUI中使用代码向窗口中插入子窗口

    使用SOUI开发客户端UI程序,通常也推荐使用XML代码来创建窗口,这样创建的窗口使用方便,当窗口大小改变时,内部的子窗口也更容易协同变化. 但是最近不断有网友咨询如何使用代码来创建SOUI子窗口,特 ...

  6. IDEA中Java代码存入DB中为乱码

    有一种可能是编译后出现的乱码,可以在Setting的Java compiler中加如下 -encoding UTF-8

  7. idea中maven项目放到包中的mapper的xml文件不发布的问题

    今天重新一下mybatis的基础,然后一直报错,提示的是 result map 找不到com.zm.model.User对象可是看 mapper的写法没问题.找了半天才发现 是mapper没扫描到 解 ...

  8. 将汉字取模软件中的汉字放到keil5中显示

    最近因为要使用STM32做毕业设计,需要用LCD显示中文,STM32开发板用的是原子的战舰STM32开发板,给的LCD显示例程里貌似没有中文显示,那么需要自己去编写中文显示程序. 软件编写对我来说并不 ...

  9. js放到head中失效的原因与解决方法

    1.今天写js碰到一个奇怪的问题,写好的js放到body里面执行,但是放到head中没有任何效果,为什么导致这种原因呢? 看失效代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

随机推荐

  1. 面试准备 css 书写顺序及原理

    书写顺序 (1)定位属性:position  display  float  left  top  right  bottom   overflow  clear   z-index (2)自身属性: ...

  2. Java static的用法以及原理(06)

    静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数), 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调:类名.静态成员 类名.静态成员 存在:方 ...

  3. 基因调控网络 (Gene Regulatory Network) 01

    本文为入门级的基因调控网络文章,主要介绍一些基本概念及常见的GRN模型. 概念:基因调控网络 (Gene Regulatory Network, GRN),简称调控网络,指细胞内或一个基因组内基因和基 ...

  4. mqtt+htttp+websocket

    一.介绍 1.参考网址1:WebSocket协议:5分钟从入门到精通 2.参考网址2:WebSocket 教程(阮一峰) 二.应用 1.参考网址1:从 HTTP 到 MQTT:一个移动后端案例概述 2 ...

  5. Git&GitHub 基本使用

    如果是Windows用户需要自行去Git的官网下载Git工具 相信以您的聪明才知不需要一会就可以安装好Git工具了 博主这里是MacOS系统,本省就自带Git工具就不演示安装了 在完成一个简单的Git ...

  6. 一线大厂的分布式唯一ID生成方案是什么样的?

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  7. 使用itop4412开发板单独编译驱动模块

    上面我们的驱动是放在了内核源码的目录下来实现的编译成驱动模块,很多时候我们都是拿到一个驱动源码,不需要把他放到内核源码里面,而是直接把他编译成驱动模块,下面我们来讲下实现方法,我们还是以蜂鸣器的驱动为 ...

  8. IOC与AOP的理解

    转自 https://blog.csdn.net/qq_38006047/article/details/80797386 1,理解“控制反转” 控制反转,也叫依赖注入,是面向对象编程中的一种设计理念 ...

  9. Linux中的错误重定向你真的懂吗

    在很多定时任务里.shell里我们往往能看到 "2>&1",却不知道这背后的原理. 举个例子: * 1 * * * test.sh > /dev/null 2& ...

  10. 关于http协议的总结

    http协议知识结构图 简介 HTTP(HyperText Transfer Protocol),超文本传输协议,是Web应用的基本协议 HTTP规定了客户端(浏览器)和服务器之间的通信步骤以及通信时 ...