使用$ this-> var或$ data ['var']访问我的View对象中的数据

时间:2013-01-01 17:54:12

标签: php model-view-controller

在我加载我的视图文件后{i} Viewrender()我应该访问我的数据,如:

$this->model;

或者喜欢:

$this->data['model'];

或在我包含视图文件之前的render()方法中有类似的内容:

$model = $this->data['model'];

// and then in my view file I can access the data by just calling it locally
$model->getSomething();

来自我的视图文件?

这三种方式有效,但我开始认为像$this->data['model'];这样的东西是从视图文件中访问数据的正确方法。

哪种方法正确?

感谢。

1 个答案:

答案 0 :(得分:1)

在正确实施的MVC中,视图不是一个愚蠢的模板。它是一个类的实例,能够从模型层请求数据。而模型不是一个类或实例。它是一个层(MVC由两层组成:表示和模型)。

MVC设计模式中的视图负责所有UI逻辑。这些测量他们(如果需要)从多个模板创建响应。在其他情况下,唯一的响应可能是HTTP位置标头。

基本上,当您的视图实例需要某些内容时,它会执行以下操作:

$library = $this->serviceFactory('Library');
$details = $library->getCurrentBookDetails();

$someTemplate->assign('title', $details['title']);
$someTemplate->assign('content', $details['content']);

在这种情况下,服务工厂在当前视图和控制器之间共享,并确保仅实例化Library服务的单个实例。从而为两个实例提供了与相同状态的模型层交互的能力。