IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    构建一个属于你的PHP MVC 框架—-5.我要一张漂亮的脸:视图控制

    istrone发表于 2014-06-22 04:50:22
    love 0

    视图控制对于一个成型的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路由配置
    无觅


沪ICP备19023445号-2号
友情链接