php 坑系列(一)
PHP一直以嵌入web页面的灵活性著称,但嵌入web页面也会造成一些问题。
如 Php低版本不支持<?if?>这样的简写,所以对嵌入的代码须保证脚本的完整<?php xxx?>。
比如<?php elseif():?> 会报错,缺少什么符号,改成<?php } elseif() {?> 就ok了。
今天遇到了一个问题,就是是视图文件(嵌入了php脚本)引用产生的。
后台是基于ci框架搭建的,对于layout布局文件进行了改写引用,创建了一个layout的类库文件(在自动加载的配置文件中添加该文件),在类库中调用了ci提供的`$ci->load->view()方法,该第三个参数为true时,返回视图内容,通过这种形式,分别引入_header,_footer,_left_nav等共用视图文件,再引入_content(主体视图),最后放入到总的layouts视图文件中输出。
之前有过一次报错的经历,就是浏览器最终只输出_content(主体视图)内容,其他的布局视图内容都没有。正常情况下,就算主体部分有某些PHP脚本引入的变量未定义,也是可以正常输出内容的(带有错误说明的内容)。而只输出_content内容明显不对。
去检查model模型输出的内容,发现并没有异常,在控制器中直接输出view视图,页面虽然没有内容,但布局视图内容都ok的,所以我一直揪着数据这块不放,但没有任何结果,输出的内容依然只有_content部分,最后检查_content部分,发现在包裹了php脚本的html标签缺了起始标签部分,没想太多,补上之后,再测,页面就好了。
这说明PHP嵌入到html页面中解析时,html内容会对php脚本的正常执行有一定的影响,这就增加了出错的排查难度。