照网上看的。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. 二维码解析(编译zxing-cpp)

    二维码解析使用的类库是zxing(官网 https://github.com/zxing/zxing). 这个类库是谷歌的,原来有c++版本,后来的更新去掉了,zxing介绍了目前基于zxing的其他 ...

  2. git bash 乱码问题之解决方案

    解决办法:右击左上方git标识,然后进入到如图中,点击Text,进行操作. 操作完毕后,关闭git bash,然后再重新打开,执行ls或ll命令,查看对应的以中文作为目录或文件名是否显示乱码,如果之前 ...

  3. Java实现添加压缩文件

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

  4. 《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享

    <Linux就该这么学>培训笔记_ch12_使用Samba或NFS实现文件共享 文章最后会post上书本的笔记照片. 文章主要内容: SAMBA文件共享服务 配置共享资源 Windows挂 ...

  5. eclipse中正确创建Django项目

    本教程只说明eclipse中django项目的创建,不涉及django相关开发内容: 1."File" -> "New" -> "Othe ...

  6. 国产服务器创建GSCloud实例统计

    1. GSCloud 201909 版本 完整的数据库实例 龙芯上面的瀚高4.3.4.3 数据库实例 安装耗时: 服务器配置: 龙芯3A 四核 .45G 内存8G HDD硬盘 安装耗时: 52min ...

  7. python 计算列表内容出现次数

    """python 计算列表内容出现次数""" #方法一: l = ['a','a','b','c','d','b','b','b'] te ...

  8. 【webrtc】webrtc的rtp重传代码分析

    pgm不太能用,没有想象中的可靠,重传机制貌似仍然使用组播重传,丢包率80%的网络感觉没啥改进,如果有所好转延迟估计也是个不小的问题. 后听说rtp也有nack机制,webrtc基于rtp实现了重传在 ...

  9. 【学习笔记】Docker基础

    基本概念 Docker是什么? Docker是一种基于Golang开发的虚拟化技术,开发人员和系统管理员使用容器开发,部署和运行应用程序的平台. 使用Linux容器部署应用程序称为容器化. 容器不是新 ...

  10. 「UNR#2」黎明前的巧克力

    「UNR#2」黎明前的巧克力 解题思路 考虑一个子集 \(S\) 的异或和如果为 \(0\) 那么贡献为 \(2^{|S|}\) ,不难列出生产函数的式子,这里的卷积是异或卷积. \[ [x^0]\p ...