PHP MVC问题

0 php

有人可以告诉我从控制器传递值到视图的最佳方法是什么?如果有人玩过codeignitor,他们会知道我的意思.我查看了CI代码,但找不到处理此问题的文件.我很想知道这是怎么做到的.

谢谢!

zom*_*bat 5

据我所知,并不一定是一种"最佳"方式,但有一种常见的方法,我已经多次使用,并且已经习惯了.它通常涉及一个关联数组,以及extract()函数或变量变量.

基本上,您所做的就是使用将成为模板变量的键将数据设置为关联数组.

//inside the controller
$data['name'] = 'my name';
$data['zip'] = '90210';
Run Code Online (Sandbox Code Playgroud)

$data数组被传递到视图某种方式,直接或间接地,并且通过萃取extract()或使用可变变量的循环(相同的事情,真的).然后可以包含模板,变量在本地范围内.

//inside the view rendering process
extract($data);
//$name and $zip now exist
Run Code Online (Sandbox Code Playgroud)

Code Igniter遵循这个确切的过程.在system\libraries\Loader.php最新版本(1.7.1)中,有一个名为的函数view(),您可以在CI控制器中调用它来加载视图/模板(在CI中也是如此).您将数据数组作为第二个参数传递.

view()调用_ci_load()在同一个文件中调用的内部函数,该函数提取传递它的数据(以及其他一些古怪的缓存内容).您的变量已准备好在本地函数范围内执行,并且可以在后续模板内部进行操作include(),因为包含文件中发生的所有内容也存在于本地_ci_load()函数范围内.

我之前在一个快速而又脏的自制MVC中使用了完全相同的设计.这非常有效.