myt*_*mer 8 php model-view-controller
我正在为现有代码库添加新功能.无论如何,在我看来,我正在做的当前功能应该在MVC中.现有的代码库不是MVC,而是我正在实现的功能,我希望它是MVC.我不想将现有的MVC转换为现有的代码.
所以,我的问题是......我不知道为控制器类实现一个渲染函数.通常,在MVC中,您可以让控制器执行一些操作,使用render函数将其设置为变量,View现在可以神奇地访问控制器设置的给定变量.
我不知道除了全球之外该如何做到这一点,只是感觉不对,我一直告诉自己必须有一个更好的方法.编辑:这不是全球性的吗?> _>那些其他框架是如何做到的?
这是一个愚蠢的例子:
控制器:
class UserController extend BaseController
{
public function actionIndex()
{
$User = new User; // create a instance User model
$User->getListofUser();
$this->render('ListOfUser', 'model'=>$model);
}
}
Run Code Online (Sandbox Code Playgroud)
视图:
<?php
//I can use $ListOfUser now...
//some for loop
echo $ListofUser[$i];
?>
Run Code Online (Sandbox Code Playgroud)
先感谢您!
dec*_*eze 20
一个非常简单的例子:
class View {
function render($file, $variables = array()) {
extract($variables);
ob_start();
include $file;
$renderedView = ob_get_clean();
return $renderedView;
}
}
$view = new View();
echo $view->render('viewfile.php', array('foo' => 'bar'));
Run Code Online (Sandbox Code Playgroud)
在里面,viewfile.php你将能够使用变量$foo.视图文件中的任何代码都可以访问$this(View实例)以及render函数内范围内的任何变量.extract将数组的内容提取到局部变量中.