视图控制对于一个成型的MVC框架而言,说的是V层。这一层,是跟用户距离最近的一层。
谈到视图,就不得不说到模板,自然也就离不开模板引擎。
很多框架把这一层用成型的smarty来代替,不失为一种不错的解决方案。但是,个人对smarty不怎么感冒,所以,这里说的不是那种办法。其实,个人觉得php本身就是一个天然的模板引擎,对此,何必引入第三方呢。
一种最简单解决办法就是,把需要放入模板中得变extract出来,然后,直接include进来模板文件。ok,解决问题:
简单的demo代码如下:
控制器中的代码:
$view_vars = array( 'a'=>'A', 'b'=>'B', ); extract($view_vars); include 'b.php';
一个简单的视图:
";
当然很多时候需要对输出进行一些控制:
比如说你的应用在之前引用过fonts.googleapi.com里的资源,现在GFW比较厉害,现在引用不到了。
一个直接的影响就是你的页面会打开起来特别特别慢。直到认为那个资源超时,
这个时候就需要把模板里的fonts.googleapi.com替换成一个可访问的域名。
也就是字符串替换。字符串处理不多讲,核心是把模板中得内容转成字符串变量,然后处理,最后重新echo
用到php的输出控制ob_start,ob_end_clean,ob_get_contents
控制器代码,用这类函数wrapper.
$view_vars = array( 'a'=>'A', 'b'=>'B', ); ob_start(); extract($view_vars); include 'b.php'; $contents = ob_get_contents(); ob_end_clean(); echo $contents;
这样就可以对contents变量做相应的处理。
Maybe you like these: |
构建一个属于你的PHP MVC 框架—-3.给我一个任意门吧:模型控制 |
PHP经典代码 |
一段求相对路径的PHP代码 |
构建一个属于你的PHP MVC 框架—-4.十字路口:控制器 |
构建一个属于你的PHP MVC 框架—-1.URL路由配置 |
无觅 |