您的位置:首页 > 编程语言 > PHP开发

PHP的MVC实现(3)

2008-08-23 09:26 281 查看
接下来是视图??我去掉了HTML以节省空间,你可以查看这篇文章的完整代码。

以下是代码片段:

<?php

/**

* Binds product data to HTML rendering

*/

class ProductView {

/**

* Private

* $model an instance of the ProductModel class

*/

var $model;

/**

* Private

* $output rendered HTML is stored here for display

*/

var $output;

//! A constructor.

/**

* Constucts a new ProductView object

* @param $model an instance of the ProductModel class

*/

function ProductView (&$model) {

$this->model=& $model;

}

//! A manipulator

/**

* Builds the top of an HTML page

* @return void

*/

function header () {

}

//! A manipulator

/**

* Builds the bottom of an HTML page

* @return void

*/

function footer () {

}

//! A manipulator

/**

* Displays a single product

* @return void

*/

function productItem($id=1) {

$this->model->listProduct($id);

while ( $product=$this->model->getProduct() ) {

// Bind data to HTML

}

}

//! A manipulator

/**

* Builds a product table

* @return void

*/

function productTable($rownum=1) {

$rowsperpage=’20’;

$this->model->listProducts($rownum,$rowsperpage);

while ( $product=$this->model->getProduct() ) {

// Bind data to HTML

}

}

//! An accessor

/**

* Returns the rendered HTML

* @return string

*/

function display () {

return $this->output;

}

}

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

以下是代码片段:

<?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的唯一方式??比如你可以用控制器实现模型同时整合视图。这只是演示模式的一种方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: