您当时的方位:主页 > 言语编程 > PHP

怎么正确了解PHP的过错信息

2014-08-18  www.codeforacause.net
  咱们编写程序时,无论怎样小心翼翼,犯错总是在所难免的。这些过错通常会利诱PHP编译器。假如开发人员无法了解编译器报错信息的意义,那么这些过错信息不只毫无用处,还会常常让人感到懊丧。

  编译PHP脚本时,PHP编译器会尽其所能陈述它遇到的第一个问题。这样就发生一个问题:只有当过错呈现时,PHP才干将它辨认出来(本文后边对此问题进行了详细描绘)。正是由于这个原因,编译器指出犯错的那行,从表面上看来或许语法正确无误,或许或许是底子就不存在的一行!

  更好地了解过错信息能够大大节约确认并改正过错内容所花费的时刻。因而,在本文中,我将尽力说明多种不同类型的PHP报错信息,以及在开发过程中怎么正确了解各种报错信息的意义。

  本文中所叙述的内容与您所运用的PHP的版别无关,由于本文所描绘的各种过错并不限定于某一特别版别的特定过错。别的咱们假定您是一位初级或许中级程序员,并现已从事编程作业有半年或一年的时刻。

  编译器的作业方法

  要搞清楚编译器为什么会陈述某一行上存在过错,首要有必要清晰编译器解析PHP代码的机制。我并不打算在本文中对此进行详细论说,可是,咱们将会评论一些更易于引发过错的简略概念。

  变量声明

  假如在一条句子中声明一个变量,详细方法如下所示:

  $variable = 'value';

  编译器首要求出句子右半部分的值(即等号右边的一切内容)。在一些编程书本中,将此表明为句子的 RHS (右半部分)。恰恰正是句子的这一部分常常会引发过错。假如运用的语法不正确,就会呈现解析过错。

  解析过错

  Parse error:解析过错,unexpected T_WHILE in c:/program files/apache group/apache/htdocs/script.php on line 19

  每次确认了前一过错时,解析过错一个接一个地不断呈现。由于PHP在第一个解析过错之后就中止履行脚本,调试并纠正这一系列的过错往往会让人觉得特别厌烦。

  并且,解析过错具有很少的信息,几乎不陈述过错地点的行号。详细原因便是当呈现过错时,编译器断定好几行的语法看起来应该是有用的,直至遇到无效的语法,最或许的景象便是表达式中运用了预界说的字词,例如;

  while = 10; // Bad ? while 便是一个预界说字词,不能分配给一个值

  预界说的字词包含 while、function等,假如PHP运用 uses to evaluate your code. 您不能运用这些预界说字词来命名变量,并且假如您非要这样做的话,PHP就会报出更多的过错,这是您无法忍受。

  关于这个问题,下面的示例或许会对您有所协助。请咨询阅览一下下面所示的PHP 代码:

  php

  $b = "somevalue"

  if($b == "somevalue"){

  print "Hello world!";

  }

  

  过错坐落"$b ="一行(在句子的结尾短少分号),所以过错应该是"解析过错:第3行短少分号"对吧?而不应该根据解析器断定的:

  Parse error: parse error, unexpected T_IF in c:/program files/apache



  group/apache/htdocs/ereg2.php on line 4

  在第4行,if() 句子的语法是正确的。那么,编译器是被什么给搞糊涂了呢?头绪便是"unexpected T_IF" 部分。呈现 "unexpected T_???"过错时,它所表明的意义为:编译器发现在预界说字不应该呈现的方位呈现。T_IF 代表 if(), T_WHILE 代表 while(), T_FOR 代表 for()等。

  值得幸亏的是,一些过错的原因也很简略:

  句子没有运用分号(;)完毕,比方上面的示例。字符串中短少引号。

  其他一些常见的过错

  我见过的最常见的过错便是,当没有运用大括号( } )完毕一个函数或许一个循环时呈现的过错,这很或许是最常见,最让人烦的过错。详细代码如下:

  (未完)