PHP实例:实现超级简单的MVC结构

下面是一个超级简单的MVC结构实现,甚至连数据源都用了一个内置的固定数组,虽然简单,但其实众多的PHP Framework核心实现的思想应该和这个是差不多的

只不过一些framework提供了更多的方便开发者使用的工具,我也想自己来实现一个PHP的 框架,目前正在着手策划中,也希望自己能够从框架的开发中学习到更多的PHP设计思想和方法。

Controller.php

include 'Model.php';
include 'View.php';

class Controller {
    private $model     = '';
    private $view     = '';
   
    public function Controller(){
        $this->model    =    new Model();
        $this->view        =    new View();
    }
   
    public function doAction( $method = 'defaultMethod', $params = array() ){
        if( empty($method) ){
            $this->defaultMethod();
        }else if( method_exists($this, $method) ){
            call_user_func(array($this, $method), $params);
        }else{
            $this->nonexisting_method();
        }
    }
   
    public function link_page($name = ''){
        $links = $this->model->getLinks();
        $this->view->display($links);
       
        $result = $this->model->getResult($name);
        $this->view->display($result);
    }
   
    public function defaultMethod(){
        $this->br();
        echo "This is the default method. ";
    }
   
    public function nonexisting_method(){
        $this->br();
        echo "This is the noexisting method. ";
    }
   
    public function br(){
        echo "<br />";
    }
}

$controller = new Controller();
$controller->doAction('link_page', 'b');
$controller->doAction();

Model.php

Code
class Model {
    private $database = array(
        "a"    =>    "hello world",
        "b"    =>    "ok well done",
        "c"    =>    "good bye",
    );
   
    //@TODO connect the database
   
    //run the query and get the result
    public function getResult($name){
        if( empty($name) ){
            return FALSE;
        }
       
        if( in_array($name, array_keys( $this->database ) ) ){
            return $this->database[$name];
        }
    }

    public function getLinks(){
        $links = "<a href='#'>Link A</a>  ";
        $links.= "<a href='#'>Link B</a>  ";
        $links.= "<a href='#'>Link C</a>  ";
       
        return $links;
    }
}

View.php

class View {
   
    public function display($output){
//        ob_start();
       
        echo $output;
    }
   
}

时间: 2024-08-03 04:00:57

PHP实例:实现超级简单的MVC结构的相关文章

mvc-建一个简单的MVC结构,为什么用户请求的数据总是会被替换?

问题描述 建一个简单的MVC结构,为什么用户请求的数据总是会被替换? 在学着用golang开发一个简单的 MVC 结构时,IndexCtrl 继承了 Controller 之后,可以读取它的 Request 和 ResponseWriter 属性值,可是当有另一个请求的时候,上一个请求如果没处理完,这两个属性值也变成新的了. 请问下面这段代码要怎么改才可以在 IndexCtrl 的 GET() 执行时,得到的 Controller 的那两个属性值都是独立的? func main() { var

PHP简单的MVC框架实现方法_php实例

在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中. 1.概述 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 2.代码结构 3.代码实现 <?ph

超级简单实现JavaScript MVC 样式框架

 本文给大家分享的是一则翻译过来的,由国外友人写的如何简单有效的实现javascript MVC样式框架,算是一个MVC的入门教程,希望大家能够喜欢.     介绍 使用过JavaScript框架(如AngularJS, Backbone 或者Ember)的人都很熟悉在UI(用户界面,前端)中mvc的工作机理.这些框架实现了MVC,使得在一个单页面中实现根据需要变化视图时更加轻松,而模型-视图-控制器(mvc)的核心概念就是:处理传入请求的控制器.显示信息的视图.表示业务规则和数据访问的模型.

PHP5中MVC结构学习

php5 一.介绍 现在在开发WEB应用的时候,比较流行的一种做法就是使用"MVC"结构,使用如此方式去开发WEB应用程序,逻辑性强.简浩明了,使程序设计起来更加方便,快捷.何为"MVC"呢?简单的来说,它就是"模型(Model)"."视图(View)"及"控制器(Controller)"的结合体,也就是所有的"三层"抽象结构,当然这里所说的"MVC"是针对WEB上应

Ruby on Rails中MVC结构的数据传递解析_ruby专题

如果读者已经开发过基于 Rails 的应用,但对其 MVC 间的数据传递还有诸多困惑,那么恭喜您,本文正是要总结梳理 Rails 数据传递的方法和技巧.Ruby on Rails 3(以下统称为 Rails 3)是当前的主要发布版本,本文所述及的内容和代码都基于此版本.Rails 3 简介 Ruby on Rails 是一个 Ruby 实现.采用 MVC 模式的开源 Web 应用开发框架,能够提供 Web 应用的全套解决方案.它的"习惯约定优于配置"的设计哲理,使得 Web 开发人员能

PHP5中MVC结构学习_php基础

一.介绍 现在在开发WEB应用的时候,比较流行的一种做法就是使用"MVC"结构,使用如此方式去开发WEB应用程序,逻辑性强.简浩明了,使程序设计起来更加方便,快捷.何为"MVC"呢?简单的来说,它就是"模型(Model)"."视图(View)"及"控制器(Controller)"的结合体,也就是所有的"三层"抽象结构,当然这里所说的"MVC"是针对WEB上应用而言的,

C++程序设计:原理与实践(进阶篇)15.6 实例:一个简单的文本编辑器

15.6 实例:一个简单的文本编辑器 列表最重要的性质就是可以在不移动元素的情况下对其进行插入或删除操作.下面我们通过一个例子来说明这一点.考虑应该如何在文本编辑器中表示一个文本文件中的字符.所选用的表示方式应当能够使对文本文件进行的操作简单而高效. 那么具体会涉及哪些操作呢?假设文件能存储在计算机的内存中.也就是说,我们可以选择任何一种适合的表示方式,当需要保存到文件中时,只要把它转换成一个字节流就可以了.相应地,我们也可以把一个文件中的字符转成字节流,从而把它读入内存中.这说明我们只需要选择

server-数据库超级简单的语句统计,菜鸟求助

问题描述 数据库超级简单的语句统计,菜鸟求助 SQL. server 我想统计某个表中每个月的数据.请问语句怎么写呢? 解决方案 group by 分组就可以, 解决方案二: http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html 解决方案三: group by分组之后就可以进行查看了 解决方案四: group by分组之后就可以进行查看了 解决方案五: 基本就是group by 你不发表结构,肯定没法给你写SQL语句的 解决

91-关于背景图片(超级简单).........

问题描述 关于背景图片(超级简单)......... 问题描述:有一张图片1300 x 200px的图片用做网页背景,怎么样让图片铺满网页?而不是这样呢? 补充:比方网页像素是1366px 要让1300图片的长度变成1366px,而不是自动填,那样图片就不美了 解决方案 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml