MVC模式的PHP实现(3)

原创 2003年10月20日 10:52:00

最后是控制器,我们将把视图实现为一个子类。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

<?php
/**
*  Controls the application
*/
class ProductController extends ProductView {

    
//! A constructor.
    /**
    * Constucts a new ProductController object
    * @param $model an instance of the ProductModel class
    * @param $getvars the incoming HTTP GET method variables
    */
    
function ProductController (&$model,$getvars=null) {
        
ProductView::ProductView($model);
        
$this->header();
        switch ( 
$getvars['view'] ) {
            case 
"product":
                
$this->productItem($getvars['id']);
                break;
            default:
                if ( empty (
$getvars['rownum']) ) {
                    
$this->productTable();
                } else {
                    
$this->productTable($getvars['rownum']);
                }
                break;
        }
        
$this->footer();
    }
}
?>

 

注意这不是实现MVC的唯一方式——比如你可以用控制器实现模型同时整合视图。这只是演示模式的一种方法。

 

UML for "Products" MVC Pattern


我们的index.php 文件看起来像这样:

<?php
require_once('lib/DataAccess.php');
require_once(
'lib/ProductModel.php');
require_once(
'lib/ProductView.php');
require_once(
'lib/ProductController.php');

$dao=& new DataAccess ('localhost','user','pass','dbname');
$productModel=& new ProductModel($dao);
$productController=& new ProductController($productModel,$_GET);
echo 
$productController->display();
?>

 

漂亮而简单。

我们有一些使用控制器的技巧,在PHP中你可以这样做:

 

$this->{$_GET['method']}($_GET['param']);

 

一个建议是你最好定义程序URL的名字空间形式(namespace),那样它会比较规范比如:

"index.php?class=ProductView&method=productItem&id=4"


通过它我们可以这样处理我们的控制器:

 

$view=new $_GET['class'];
$view->{$_GET['method']($_GET['id']);

 

有时候,建立控制器是件很困难的事情,比如当你在开发速度和适应性之间权衡时。一个获得灵感的好去处是Apache group Java Struts,它的控制器完全是由XML文档定义的。

 

@ 完整程式

 

PS:本来是一个帖子的;可是死活贴不上来 -________-b 只好腰斩了

Part1 http://www.csdn.net/Develop/read_article.asp?id=21639

Part2 http://www.csdn.net/Develop/read_article.asp?id=21640

Part3 http://www.csdn.net/Develop/read_article.asp?id=21641

php mvc模式

网上很多介绍mvc模式的,刚开始我不会的时候,看的也是特别的模糊看不懂,今天就用通俗易懂的话来说一下我对mvc模式的应用和理解: 1.首先要分清楚“m”,“v”,“c”分别代表什么,什么意思:m代表...
  • baidu_22777475
  • baidu_22777475
  • 2015年05月04日 11:41
  • 327

PHP---分层模式和mvc模式

继续昨天没完的内容,分层开发模式。 分层开发模式分析:     可读性、维护性、扩展性相比model1模式有了明显改善,但是也有不足。     有些页面既充当了界面,同时又去响应用户的各种请求,...
  • huyishero
  • huyishero
  • 2016年12月16日 23:45
  • 535

PHP简单实现MVC框架路由功能模式

说到使用PHP进行网站开发,自然离不开各种PHP的开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等等,让我们的开发更为快捷方便。但是很多人只是会使用框架,却从来不去了解框架的内部...
  • Zhihua_W
  • Zhihua_W
  • 2016年11月15日 09:11
  • 4804

MVC模式的PHP实现(3)

最后是控制器,我们将把视图实现为一个子类。   /** *  Controls the application */ class ProductController extends Produ...
  • flappy_man
  • flappy_man
  • 2004年08月01日 15:07
  • 517

php搭建mvc框架二(类的自动加载)

首先呢这是在上一篇的基础上继续写的!! 目录: 自动加载类: spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此,不再建议使用 __a...
  • wzl0310
  • wzl0310
  • 2016年12月26日 09:22
  • 13657

基于MVC设计模式实现简单PHP框架(雏形)-初期

(记住:这里只是提供思考的过程)        其实这里只是一个我们课的Web实验”课程设计题目统计系统“,在做实验的过程中起初只是想往MVC靠拢而已,却不知不觉地“实现”了基于MVC的简单框...
  • qq_15096707
  • qq_15096707
  • 2016年04月22日 21:38
  • 2262

详解 php mvc的单点入口程序

对新手而言,我觉得了解mvc的入门知识还是要从这个单点入口开始,至于mvc的model  control 和view还不是首先需要解释的,因为你没有必要完全遵循mvc的所有要求,但是单点入口个人认为是...
  • ljguo212
  • ljguo212
  • 2013年05月21日 23:54
  • 798

基于JavaEE架构模式下的MVC

对于MVC准确的定义
  • liu251
  • liu251
  • 2011年02月21日 14:30
  • 4320

初识JavaEE设计模式-MVC

1.Servlet VS JSP          最开始设计的是Servlet,是为了在服务器端替代CGI,因为对于CGI每次调用都会重新起一个进程。而Servlet是起一个线程,开销较小。  ...
  • vincentff7zg
  • vincentff7zg
  • 2015年03月22日 20:47
  • 921

php架构学习-传统三层架构

什么是三层架构     所谓的三层开发就是将系统的整个业务应用划分为表示层——业务逻辑层——数据访问层,这样有利于系统的开发、维护、部署和扩展。    分层是为了实现“高内聚、低耦合”。采用“分而治之...
  • zvbiao
  • zvbiao
  • 2016年03月09日 22:25
  • 1222
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MVC模式的PHP实现(3)
举报原因:
原因补充:

(最多只允许输入30个字)