照网上看的。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. Java实现添加压缩文件

    package junittest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...

  2. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

  3. Excel VBA业余爱好者心得及总结

    我不是IT专业人士,而是一位医务工作者,当初学习Excel VBA时,是因为读研究生时的课题需要:实验仪器每天产生4个Word文件,每个文件有9个表格,总计近百个数据.为了对这些数据进行统计分析,则需 ...

  4. Delphi BusinessSkinForm使用说明

    1.先放bsBusinessSkinForm.bsSkinData.bsStoredSkin各一个到窗体上 2.修改bsBusinessSkinForm的SkinData属性为bsSkinData1 ...

  5. 【题解】【网络流24题】汽车加油行驶问题 [P4009] [Loj6223]

    [题解][网络流24题]汽车加油行驶问题 [P4009] [Loj6223] 传送门:汽车加油行驶问题 \([P4009]\) \([Loj6223]\) [题目描述] 给出一个 \(N \times ...

  6. 类、闭包、monand

    类.闭包.monand 三者的相同点都是封装了数据与操作. 类:定义数据类型,倾向于数据的抽象:集合数据为操作提供上下文. 闭包:对环境变量和操作的封装抽象.操作基于环境变量,核心问题是环境变量的管理 ...

  7. 浅谈maven setting.xml 设置的mirrorof标签作用。

    https://blog.csdn.net/whbing1471/article/details/53983779 A 看这一段 背景:写好的java项目放置到linux服务器上进行编辑的时候,由于m ...

  8. Android开发DDMS找不到Emulator Control的方法

    1.右键DDMS,点击reset. 2.window->show view->other->android->Emulator Control

  9. c# mvc使用富文本编辑器数据上传回显问题,图片,附件上传解决方案

    1.首先去官网下载编辑器:http://ueditor.baidu.com/website/download.html   我用的是asp.net  mvc开发模式所以选的是asp 2.前端页面必须引 ...

  10. JQuery入门篇

    JQuery入门篇 jQuery选择器 “$”表示JQuery对象 根据ID查找 $(‘#var’)表示将一个id值为var的DOM节点封装成一个jQuery对象,DOM节点必须以“#”开头. 例如: ...