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

PHP
数据库相关问题
Oracle Faq(Oracle的版本)
[FAQ]PHP中的一些常识:类篇
第1次亲密接触PHP5(2)
ftp类(myftp.php)
PHP出错界面
对盗链说再见...
example2.php
3
PHP与javascript对多项选择的处理
用PHP创建PDF中文文档
用Socket发送电子邮件(利用需要验证的SMTP服务器)
PHP:风雨欲来 路在何方?
PHP的面向对象编程
提升PHP执行速度全攻略(下)
PHP中在数据库中保存Checkbox数据(2)
用在PHP里的JS打印函数
在线竞拍系统的PHP实现框架(一)
分页显示Oracle数据库记录的类之一
分页显示Oracle数据库记录的类之二

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 979 ::
收藏到网摘: 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;
    }
   
}