有很多例子用ASP.NET解释MVP模式,但是没有找到使用PHP的例子。
我是PHP程序员,想知道在哪里可以找到MVP模式的PHP示例?
有很多例子用ASP.NET解释MVP模式,但是没有找到使用PHP的例子。
我是PHP程序员,想知道在哪里可以找到MVP模式的PHP示例?
View
类(如果有)也不应该实现构造函数。class Model
{
public function getSomeStuff()
{
return array('foo' => 'bar');
}
}
class View
{
public function render($path, array $vars = array())
{
ob_start();
extract($vars);
require($path);
return ob_get_clean();
}
}
class Presenter
{
private $model;
private $view;
public function __construct(Model $model, View $view)
{
$this->model = $model;
$this->view = $view;
}
public function indexAction()
{
$data = $this->model->getSomeStuff();
// Variables are set now, render the HTML
// And returns as a string
return $this->view->render('path/to/template.phtml', $data);
}
}
文件:template.phtml
<!DOCTYPE html>
<html>
<head>
<title>...</title>
</head>
<body>
<?php foreach($vars as $key => $value): ?>
<p><?php echo $key; ?> : <?php echo $value; ?></p>
<?php endforeach; ?>
</body>
</html>
使用方法如下:
$model = new Model();
$view = new View();
$presenter = new Presenter($service, $view);
echo $presenter->indexAction();
MVP和MVC都是为GUI应用程序设计的实际上。大多数PHP框架将"MVC"更多地用作流行语。使用愚蠢模型(只有数据库)、非活动视图(=模板)和编排控制器的实际实现已经匹配了MVP。就功能而言,控制器通常也充当演示者的角色,将数据从模型传输到视图中。 (在正确的MVC中,模型和视图之间的交互更多,视图实际上是活动组件)。
但无论如何,有一些框架实际上已经意识到了新术语和模式。