mahone 发表于 2010-6-5 13:49:52

loader.php view方法的请教

在看Loader.php view方法的时候,看到这里,没有看懂
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才能进去吧。
请指教,谢谢!

mahone 发表于 2010-6-8 11:26:49

请求hex老大给予解答,谢谢!

Hex 发表于 2010-6-8 13:34:46

注意 include 是把 html 一起 include 进来了,当然就会被输出到浏览器。
只有 php 代码才不会输出到浏览器。
输出到浏览器的都会进入 buffer

mahone 发表于 2010-6-8 19:53:30

回复 3# Hex

把这个地址打印了下$_ci_path,是view里面的文件,包含html等,如果hex所说,应该是html直接进缓存了
以前好像没遇到过这样的情况,长知识了。谢谢hex!
页: [1]
查看完整版本: loader.php view方法的请教