最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解PHP原理之錯誤抑制與內(nèi)嵌HTML分析

 更新時間:2011年05月02日 14:12:58   作者:  
PHP支持內(nèi)嵌HTML的, 那么對于PHP文件中, PHP標(biāo)簽外的HTML會怎么處理呢? 它和直接輸出HTML有什么區(qū)別么?
PHP提供了一個錯誤抑制符'@', 它是通過什么方式來阻止錯誤輸出呢? 我又該在什么時候使用它呢?
這是這倆天一些網(wǎng)友提到的共同問題, 今天就索性整體回答下, 備后來人翻閱.
PHP文件內(nèi)嵌HTML的處理方式
在PHP中, 所有在標(biāo)簽外的字符, 在詞法分析過程中, 都會翻譯成T_INLINE_HTML token, 在語法分析的時候, 所有的T_INLIE_HTML都會被分配ZEND_ECHO輸出.
也就是說:
復(fù)制代碼 代碼如下:

<?php
while($con) {
?>
laruence
<?php
}
?>

會生成一條OPLINE: T_ECHO, 而操作數(shù)是”laruence”;
就結(jié)果來說, 上面的代碼, 其實(shí)和下面的結(jié)果一樣:
復(fù)制代碼 代碼如下:

<?php
while($con) {
echo "laruence";
}
?>

但有一個要注意的地方是, 對于PHP標(biāo)簽外的字符, 在詞法分析過程中, 都會以400個字符為單位切分, 比如:
復(fù)制代碼 代碼如下:

<?php
if(1) {
?>
laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence
<?php
}
?>

上面的代碼中, 標(biāo)簽外有531個字符(包含空格回車), 會被分成倆條T_INLINE_HTML輸出.
錯誤抑制符
我們知道,在PHP中,可以通過錯誤抑制符來靜默錯誤提示, 那么它是通過什么方式呢?
在語法分析的過程中, 對于:
復(fù)制代碼 代碼如下:

<?php
@include('file');
?>

會分別在include語句前后插入倆條Opline(操作), 這倆個操作分別做:
復(fù)制代碼 代碼如下:

1. 保存當(dāng)前的error_reporting值, 并設(shè)置error_reporting(0); //關(guān)閉錯誤輸出
2. 恢復(fù)之前保存的error_reporting值

也就是說, 其實(shí)上面的代碼, 和下面的代碼類似:
復(fù)制代碼 代碼如下:

$old = error_reporting(0);
include('file');
error_reporting($old);

另外, 講一句題外話:”什么時候才應(yīng)用錯誤抑制呢?”, 我個人建議, 就是如果這條語句出錯了對你影響不大, 你也不關(guān)心這個錯誤是什么, 你也不會安排額外的邏輯來處理這種錯誤, 那么你可以使用錯誤抑制. 否則, 請你使用額外的邏輯來判斷錯誤.

相關(guān)文章

最新評論

临泽县| 鄂尔多斯市| 富裕县| 武宁县| 囊谦县| 铁岭县| 鄢陵县| 五台县| 镇江市| 贞丰县| 靖宇县| 西丰县| 澄江县| 赤水市| 夏津县| 会理县| 绩溪县| 济宁市| 久治县| 景德镇市| 澄江县| 永嘉县| 黄山市| 西乌珠穆沁旗| 城口县| 仪陇县| 门源| 上饶县| 凤阳县| 通江县| 库车县| 邵武市| 陇西县| 富裕县| 张家口市| 富宁县| 丰宁| 临邑县| 津市市| 萍乡市| 法库县|