我有一个自定义 MVC PHP 框架,它有一个路由器类,它调用一个控制器,它使用一个模型,然后控制器呈现视图等。
我的问题是我无法从技术上弄清楚如何在语义上允许变量在控制器和视图之间传递。我可以做一个快速而肮脏的修复,但我想要的是一个控制器:
class IndexController extends Controller{
var $name = "John"; // instance variable
}
看看这个:
<p> <?=$name?> </p>
我的问题是这样的:
- 如何创建一个 Controller->render() 函数或类似的函数,允许视图从控制器访问实例变量?和,
- 我怎么能做到这一点而不做笨拙的事情,
$data['view']['name'] = "John";
或者默认情况下必须为我制作的任何新控制器编写十行代码。我想这样做,所以它尽可能干燥。
谢谢。
编辑:FabioCosta 的解决方案
我不确定我是否理解,到目前为止,我的基本控制器是这样的:
<?php
class Controller{
public function __get($key){
if(isset($this->$$key)) return $this->$$key;
}
}
?>
我的基本视图类如下所示:
<?php
class View{
public $controller;
public function render(){
$this->controller = $this;
}
?>
我像这样从路由器初始化:
<?php
$controller = new IndexController();
$view = new IndexView();
$view->render();
?>
但是,这不起作用,我知道我做错了什么。