当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP实例:实现超级简单的MVC结构

PHP
使用PHP5创建图形的巧妙方法四
如何用正确的方法来写出质量好的软件的75条体会 [转]
在PHP中开发XML应用程序
用PHP和AJAX创建RSS聚合器
cakephp框架
为 Linux 和 Windows 安装 PHP 和 Oracle 10g Instant Client
Php与java结合解析xml
AJAX框架汇总
PHP设计模式-对象行为型模式-VISITOR
无变形缩略图生成程序 swin img class Ver 0.1
winbinder开发php桌面程序[连载一:安装配置篇]
结合AJAX的PHP开发之后退、前进和刷新(1)
结合AJAX的PHP开发之后退、前进和刷新(2)
结合AJAX的PHP开发之后退、前进和刷新(3)
结合AJAX的PHP开发之后退、前进和刷新(4)
结合AJAX进行PHP开发之入门(1)
结合AJAX进行PHP开发之入门(2)
结合AJAX进行PHP开发之入门(3)
结合AJAX进行PHP开发之入门(4)
结合AJAX进行PHP开发之入门(5)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 1138 ::
收藏到网摘: n/a

下面是一个超级简单的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>&nbsp;&nbsp;";
        $links.= "<a href='#'>Link B</a>&nbsp;&nbsp;";
        $links.= "<a href='#'>Link C</a>&nbsp;&nbsp;";
       
        return $links;
    }
}

View.php


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