php的<?php ?>标签匹配

在公司实习了没有多久就开始和同事发现了一个问题,就是之前的人写过的项目经常莫名其妙的出错,仔细的看项目的源代码的时候发现项目中并没有逻辑上的错误,而且各种关系以及数据都没有问题,这是为什么呢。
再次认真看代码之后同事发现了一个问题就是,在有许多纯粹的php文件中的末尾加上了?>这个标签,这就是问题的根源。
在学习php的时候我们会学习到这样的写法:

1 <?php
2     echo "hello world";
3 ?>

说是在写php程序的时候要先使用php标签,之后写php的代码,这样说是完全正确的。之后我上网查看了一下对于这个标签的错误解释就是说规范写程序的人会将php的标签成对出现,但是不规范写的人就会省掉末尾的?>符号,这种说法显然不是对的。那么这个标签到底是什么意义呢,经过研究发现:

在程序中如果成对出现了<?php ?>这样的标签,php的解释器会这样理解:认为这段代码是嵌入到html中使用的,而不是单独用php写的逻辑,所以遇到成对出现的标签的时候,解释器会识别到html标签认为他是应该出现的html语法。但是很多情况并不是如此。

1 <h1>
2 <?php echo "hello world" ?>
3 </h1>

像这样的代码,解释器就会认为这是在html中嵌入的php代码。

如果这样写:

<?php

echo "hello";

就表示这段代码是一个完全使用php语言写的逻辑,php就不会管会不会有html标签了。

想想之前使用框架写代码的时候发现没有后面的?>标签以为是错误的还自己画蛇添足的加上了标签真是一个不机智的表现啊。

posted @ 2016-07-16 10:53  小马甲奶糖  阅读(1210)  评论(0编辑  收藏  举报