`

模块简单设计——实现一个简单的MVC框架

阅读更多

A,首先分别实现MVC的基类以及路由模块

 

控制器(controller.inc)

<?php
class Controller
{
        private static $instance;

        public function __construct()
        {
                self::$instance =& $this;
        }

        public static function &get_instance()
        {
                return self::$instance;
        }
}
?>

模型(model.inc)

<?php
class Model
{
        private static $instance;

        public function __construct()
        {
                self::$instance =& $this;
        }

        public static function &get_instance()
        {
                return self::$instance;
        }
}
?>

路由(router.inc)

<?php
require_once("testcontroller.php");
class Router
{
        static public function route(){

                $request_uri = $_SERVER["REQUEST_URI"];

                $params = explode("/",$request_uri);

                $e_class = substr($params[1],strpos($params[1],"?")+1);
                $e_method = $params[2];

                $inputs = array();
                for($i = 3;$i < count($params);$i += 2){
                        $inputs[$params[$i]] = $params[$i+1];
                }

                $c = new $e_class;
                $c->$e_method($inputs);
        }
};
?>

 框架入口(index.php)

<?php

require_once("router.inc");

Router::route();

?>

通过上面的一点代码,一个简单的MVC结构就搭建好了

B,下面来具体使用了试试,创建一个自定义model,controller以及视图view

自定义视图(view.tpl)

<html>
<head>
        <title>test page</title>
</head>
<body>

<h1><?php
        echo $message;
?></h1>

</body>
</html>

 自定义控制器(testcontroller.php)

<?php
require_once("controller.inc");
require_once("test_model.php");

class test_controller extends Controller
{
    public function find($input){
        $model = new test_model();
        $res = $model->select($input["id"]);
        $message = $res["msg"];

        //var_dump($message);
        include_once("view.tpl");
    }
}
?>

 自定义模型(test_model.php)

<?php
require_once("model.inc");
class test_model extends Model
{
    public function select($id){

        //select * from [table_name]

        return array(
            "id" => $id,
            "msg" => "test message"
        );
    }
}
?>

 这里我没有实现数据库操作类,只是简单的模拟以下,把上面这些文件放到网站根目录下,测试如下的链接

http://localhost/index.php?test_controller/find/id/6

其中test_controller是控制器,find是调配函数,后面的id和6是传递参数

 

大家可以学习一下php的一些简单易用的MVC框架:codeigniter thinkphp

分享到:
评论

相关推荐

    一种新的网络应用程序开发框架——MVC*

    MVC(Model/View/Controller...本文介绍一种基于MVC框架的的新网络应用程序。这种框架把实施逻辑与表现形式独立开来。它也提高了系统的可维护性,可扩展性以及使用模块数据库备案、模板数据库,通讯对象和缓冲队列的性能。

    mvc5验证模块

    .net mvc验证有很多方式,NET自带的验证方式很难用,并且很复杂。让我们开发者感觉很不爽,今天我推荐一个第三方验证框架——FluentValidation(FluentValidation.MVC)真的很棒,你研究一下可以做深入开发。

    Web 框架之 SSH 框架的简单搭建的整理(基于Eclipse,搭建演示完整工程,jar、代码 、html)

    SSH框架集,是现在大多数软件设计过程中都会使用的一种框架集。 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web...

    MVC源码学习:打造自己的MVC框架

    MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理) ............................................................................... 3 一、MVC原理解析 ...............................................

    MVC设计模式实战ExtJS4.2高级组件+SSH2在线投稿系统

    11.实现右键菜单的功能,自定义一个按钮 12.文章预览功能、修改文章功能 13.查看文章评审(重写分页组件的部分方法) 14.完善分页组件、查看文章评审后台功能 15.由菜单树操作右边的工作区域、完成管理员管理文章...

    ASP网络考试系统的设计与实现——阅卷子系统(源代码+thesis).zip

    我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC...

    计算机专业毕设精选-ASP.NET多功能聊天软件的设计与开发——文字聊天文件传输模块(源代码+论文).rar

    本资源提供了一个基于ASP.NET平台的多功能聊天软件的设计与开发案例,专注于文字聊天和文件传输功能的实现。该案例不仅包含了完整的源代码,还附带了详细的论文文档,为开发者提供了从理论到实践的全面指导。 **...

    ASP.NET多功能聊天软件的设计与开发——文字聊天文件传输模块(源代码+thesis).zip

    我们将使用ASP.NET MVC框架和C#编程语言来实现这个项目。 ASP.NET MVC是一种成熟的开发框架,它采用模型-视图-控制器的设计模式,将应用程序的逻辑和界面分离,提供了更好的代码组织和可维护性。我们选择ASP.NET MVC...

    毕业设计项目——智能家居原型开发

    2、MVC框架(抽象工厂 + 观察者模式) + SSH / Django 3、网络通信(WebSocket + WebRTC + Webservice) 4、服务器推送技术(JPUSH) 5、ARM涉及模块:WIFI模块、网络通信模块、(传感器模块) 6、代码控制管理:...

    网上体育商城的设计与实现毕业设计答辩PPT.pptx

    采用的技术 Struts框架诞生于2001年,Struts 2是Struts的下一代产品,Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的...

    ABP(2.02)框架相关Demo代码以及报错处理和中文说明手册

    “DRY——避免重复代码”是一个优秀的开发者在开发软件时所具备的最重要的思想之一。我们在开发企业WEB应用程序时都有一些类似的需求,例如:都需要登录页面、用户/角色管理、权限验证、数据有效性验证、多语言/本地...

    PHPCMS2008特色介绍全新框架

    采用全球认可的最为先进的开放理念——OOP(面向对象),进行全新框架设计。框架结构更为清晰,代码更易于维护。模块化做为功能的开发形式,让扩展性得到保证。V9特别设计的二次开发扩展方式,让你不再修改官方的...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和...

    外文翻译 stus MVC

    Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology. Struts can help you control...

    电子商城系统设计实习报告.doc

    18 7.2.2 数据库表之间的关系设计 19 8 程序效果展示 20 8.1 前台功能模块 20 8.2 后台功能模块 22 9 实习总结体会 27 实习内容简述 1 实习期间完成的学习内容: 1 Java Web、JSP技术和MVC框架: Java技术是Sun公司...

    spring-framework-3.1.0.RELEASE.zip

    简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销...

    毕业设计项目-智能家居原型开发

    毕业设计项目——智能家居原型开发 涉及技术与平台: 1、android客户端应用开发技术(应用客户端app + 遥控器客户端app) 2、MVC框架(抽象工厂 + 观察者模式) + SSH / Django 3、网络通信(WebSocket + WebRTC + ...

    基于J2EE框架的个人博客系统项目毕业设计论...

    而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和...

    基于ARM与Android的互联网智能家居系统源码【高分毕业设计】.zip

    2、MVC框架(抽象工厂 + 观察者模式) + SSH / Django 3、网络通信(WebSocket + WebRTC + Webservice) 4、服务器推送技术(JPUSH) 5、ARM涉及模块:WIFI模块、网络通信模块、(传感器模块) 6、代码控制管理:...

Global site tag (gtag.js) - Google Analytics