照网上看的。Framework.class.php文件是灵魂。

<?php
class Framework {
    public static function run() {
        //echo "run()";
        self::init();
        self::autoload();
        self::dispatch();
    }

    private static function init() {
        define("DS", DIRECTORY_SEPARATOR);
        define("ROOT", getcwd().DS);

        define("APP_PATH", ROOT.'application'.DS);
        define("PUBLIC_PATH", ROOT.'public'.DS);
        define("FRAMEWORK_PATH", ROOT.'framework'.DS);

        define("CONFIG_PATH", APP_PATH.'config'.DS);
        define("CONTROLLER_PATH", APP_PATH.'controllers'.DS);
        define("MODEL_PATH", APP_PATH.'model'.DS);
        define("VIEW_PATH", APP_PATH.'view'.DS);

        define("CORE_PATH", FRAMEWORK_PATH.'core'.DS);
        define("DB_PATH", FRAMEWORK_PATH.'database'.DS);
        define("LIB_PATH", FRAMEWORK_PATH.'libraries'.DS);
        define("HELPER_PATH", FRAMEWORK_PATH.'helpers'.DS);

        define("UPLOAD_PATH", PUBLIC_PATH.'uploads'.DS);

        define('PLATFORM', isset($_REQUEST['m'])?$_REQUEST['m']:'frontend');
        define('CONTROLLER', isset($_REQUEST['c'])?$_REQUEST['c']:'Index');
        define('ACTION', isset($_REQUEST['a'])?$_REQUEST['a']:'index');

        define('CURR_CONTROLLER_PATH', CONTROLLER_PATH.PLATFORM.DS);
        define('CURR_VIEW_PATH', VIEW_PATH.PLATFORM.DS);

        require CORE_PATH."Controller.class.php";
        require CORE_PATH."Loader.class.php";
        require DB_PATH."Model.class.php";
        require DB_PATH."Mysql.class.php";

        $GLOBALS['config'] = include CONFIG_PATH."config.php";

        session_start();

    }

    private static function autoload() {
        spl_autoload_register(array(__CLASS__, 'load'));

    }

    private static function load($classname) {
        if (substr($classname, -10) == "Controller") {
            require_once CURR_CONTROLLER_PATH . "$classname.class.php";
        } elseif (substr($classname, -5) == "Model") {
            require_once MODEL_PATH."$classname.class.php";
        }
    }

    private static function dispatch() {
        $controller_name = CONTROLLER . "Controller";
        $action_name = ACTION. "Action";
        $controller = new $controller_name;
        $controller->$action_name();

    }
}
?>

PHP写一个最简单的MVC框架的更多相关文章

  1. 【spring】-- 手写一个最简单的IOC框架

    1.什么是springIOC IOC就是把每一个bean(实体类)与bean(实体了)之间的关系交给第三方容器进行管理. 如果我们手写一个最最简单的IOC,最终效果是怎样呢? xml配置: <b ...

  2. AsMVC:一个简单的MVC框架的Java实现

    当初看了<从零开始写一个Java Web框架>,也跟着写了一遍,但当时学艺不精,真正进脑子里的并不是很多,作者将依赖注入框架和MVC框架写在一起也给我造成了不小的困扰.最近刚好看了一遍sp ...

  3. 自己动手写一个简单的MVC框架(第二版)

    一.ASP.NET MVC核心机制回顾 在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件. 在这个System.W ...

  4. 写自己的ASP.NET MVC框架(上)

    http://www.cnblogs.com/fish-li/archive/2012/02/12/2348395.html 阅读目录 开始 ASP.NET程序的几种开发方式 介绍我的MVC框架 我的 ...

  5. 写自己的ASP.NET MVC框架(下)

    上篇博客[写自己的ASP.NET MVC框架(上)] 我给大家介绍我的MVC框架对于Ajax的支持与实现原理.今天的博客将介绍我的MVC框架对UI部分的支持. 注意:由于这篇博客是基于前篇博客的,因此 ...

  6. 从零开始写一个武侠冒险游戏-0-开发框架Codea简介

    从零开始写一个武侠冒险游戏-0-开发框架Codea简介 作者:FreeBlues 修订记录 2016.06.21 初稿完成. 2016.08.03 增加对 XCode 项目文件的说明. 概述 本游戏全 ...

  7. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...

  8. 从零开始实现一个简易的Java MVC框架(三)--实现IOC

    Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...

  9. PHP之简单实现MVC框架

    PHP之简单实现MVC框架   1.概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种 ...

随机推荐

  1. JVM 发生内存溢出的 8 种原因、及解决办法

    阅读本文大概需要 2.3 分钟. 出处:割肉机 cnblogs.com/williamjie/p/11164572.html Java 堆空间 GC 开销超过限制 请求的数组大小超过虚拟机限制 Per ...

  2. CentOS 7搭建本地yum源和局域网yum源

    这两天在部署公司的测试环境,在安装各种中间件的时候,发现各种依赖都没有:后来一检查,发现安装的操作系统是CentOS Mini版,好吧,我认了:为了完成测试环境的搭建,我就搭建了一个局域网的yum源. ...

  3. stacking method house price in kaggle top10%

    整合几部分代码的汇总 隐藏代码片段 导入python数据和可视化包 导入统计相关的工具 导入回归相关的算法 导入数据预处理相关的方法 导入模型调参相关的包 读取数据 特征工程 缺失值 类别特征处理-l ...

  4. cad.net 2008使用WPF(摘录山人)

    由于WPF的优点多多,而且在大量的winform的操作下感觉到数据操作的麻烦....推荐大家看杨中科WPF数据绑定教程 https://www.bilibili.com/video/av3388348 ...

  5. Maven 教程(7)— Maven使用的最佳实践

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79544201 1.设置MAVEN_OPTS环境变量 通常需要设置MAVEN_OP ...

  6. SQL join 三种扩展用法

    以前学习,只知道  LEFT JOIN.RIGHT JOIN.INNER JOIN.FULL  JOIN,共四种集合,然而加上一些条件,可以组合成另外三种集合,直接上图.

  7. AJAX -------------- 如何使用ajax

    AJAX  即“Asynchronous JavaScript and XML”(异步的JavaScript 与 XML技术 ),指的是一套综合了多项技术的浏览器端网页开发技术. 所谓为的异步交互:指 ...

  8. MySQL常见的应用异常记录

    >>Error Code: 1045. Access denied for user 'test'@'%' (using password: YES) 使用MySQL的select * i ...

  9. 043 用户注册功能03--Redis安装及完成短信发送功能

    1.Redis安装 (1)下载地址:https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100   ( redis官网: ht ...

  10. 『磁力块 bfs 分块』

    磁力块 Description 在一片广袤无垠的原野上,散落着N 块磁石.每个磁石的性质可以用一个五元组 (x,y,m,p,r)描述,其中x,y 表示其坐标,m 是磁石的质量,p 是磁力,r 是吸引半 ...