background image

  因为应用程序中的功能性

 bug 不会产生错误,所以在所有调试策略中,关于如何正确

地放置和使用

 print 或 die 语句来调试 PHP 应用程序的知识是一种很好的资产。可以用 

print 语句在代码中缩小对问题语句的定位,这些语句在语法上没有错误,也不是  bug,
但是从代码的功能上看是

 bug。这些是最难发现和调试的 bug,因为它们不会抛出错误。惟

一知道的就是在浏览器上显示的内容不是想要的内容,或者想要保存在数据库中的内容根
本没有保存。
  假设正在处理通过

 GET 请求发送过来的表单数据,想向浏览器显示信息,但是出于

某种原因,数据没有正确地提交,或者不能正确地从

 GET 请求中读出。要调试这类问题,

重要的是用

 print() 或 die() 语句知道变量的值是什么。

  

die() 语句会中止程序执行,并在 Web 浏览器上显示文本。如果不想注释掉代码,而

且只想显示到出错之前的信息和出错信息,不想显示后面的信息,那么

 die() 语句特别有

用。
  让我们在

 PHP 中用 print 语句来测试这个概念

  使用

 print 语句进行调试

  在我作程序员的那些时候,当我在

 Linux  上开发应用程序时,没有方便的 GUI 可以

告诉我

 bug 在哪,我迅速地发现我在程序中放的 print 语句越多,我在应用程序中把 

bug 的范围缩小到一行的机会越大。请创建另一个 PHP 文件 test2.php,并像清单 2 所
示的那样定义它。
清单

 2. 显示通过 GET 提交的所有变量

 
< php 
 $j = ""; 
 print("Lets retrieve all the variables submitted to this "); 
 print("script via a GET request:<br>"); 
 foreach($_GET as $key => $i){ 
     print("$key=$j<br>"); 
 } 
 if($_GET['Submit'] == "Send GET Request") 
     $j = "done!<br>"; 
 > 
<form method="GET"> 
     Name: <input name="name"><br> 
     Email: <input name="email" size="25"><br> 
     <input name="Submit" type="submit" value="Send GET Request"> 
</form> 
  您可能会非常容易地发现清单

 2 中的 bug!您很棒!但请注意这是一个非常简单的脚

本,只是作为使用

 print 语句进行调试而展示的一个例子而已。这个脚本只是提取 GET 请

求中的所有变量,如果有,就把它们显示在浏览器上。还提供了一个表单,用

 GET 请求向

服务器发送变量以进行测试。请看输出,如图

 2 所示。

 2. test2.php 的输出

  现在单击

 Send GET Request 按钮,请注意只有 $_GET 请求的键显示在浏览器上,

而正确的值都没显示。可以在循环中放一个

 print 语句,检验在 foreach 循环中每个元素

中是否确实存在数据。请参阅清单

 3。

清单

 3. 用 print 语句验证代码的功能