用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3765|回复: 3
收起左侧

[视图] loader.php view方法的请教

[复制链接]
发表于 2010-6-5 13:49:52 | 显示全部楼层 |阅读模式
在看Loader.php view方法的时候,看到这里,没有看懂
PHP复制代码
if ((bool) @ini_get('short_open_tag') === FALSE AND config_item('rewrite_short_tags') == TRUE)
                {
                        echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents($_ci_path))));
                }
                else
                {
                        include($_ci_path); // include() vs include_once() allows for multiple views with the same name
                }
复制代码

前面的if是把短标签做了个替换,他先把$_ci_path这个文件通过file_get_contents读出来,然后经过短标签的变换,然后echo出来,于是就到了缓存里了(前面有ob-start)
else这里,他就include了一下,这样这个view的内容就到缓存里了?是么?
如果不是,那后面的那句代码是把这个页面的内容读到缓存里的?
如果是,到底是什么回事?能否给我稍微介绍下?include不是仅仅include这个文件么?按我的理解,要到缓存里,应该是echo才能进去吧。
请指教,谢谢!
 楼主| 发表于 2010-6-8 11:26:49 | 显示全部楼层
请求hex老大给予解答,谢谢!
发表于 2010-6-8 13:34:46 | 显示全部楼层
注意 include 是把 html 一起 include 进来了,当然就会被输出到浏览器。
只有 php 代码才不会输出到浏览器。
输出到浏览器的都会进入 buffer
 楼主| 发表于 2010-6-8 19:53:30 | 显示全部楼层
回复 3# Hex

把这个地址打印了下$_ci_path,是view里面的文件,包含html等,如果hex所说,应该是html直接进缓存了
以前好像没遇到过这样的情况,长知识了。谢谢hex!

本版积分规则