ホームページ  >  記事  >  バックエンド開発  >  PHPエラー分析

PHPエラー分析

大家讲道理
大家讲道理オリジナル
2017-05-28 09:45:151325ブラウズ

経験豊富なプログラマーであっても、プログラミング中に間違いを犯すことは避けられません。開発者がこれらのエラーに気づき、コンパイラ エラー メッセージの意味を理解できない場合、これらの エラー メッセージ は役に立たないだけでなく、多くの場合イライラさせられるため、エラー メッセージをよく理解することで、検索の時間と修正にかかる時間を大幅に節約できます。間違った内容。

変数宣言:
次のようなステートメントで変数を宣言すると、コンパイラーは最初にステートメントの右半分の値を見つけます。これはまさにステートメントのこの部分です。エラーがスローされることがよくあります。間違った構文を使用すると、解析エラーが発生します。

解析エラー:
例: 解析エラー: 解析エラー、予期せぬ T_WHILE in c:program filesapache groupapachehtdocsscript.php on line 19
前のエラーが表示されると判断されるたびに解析エラーが次々と発生し続ける, PHP は、最初の解析エラーの後、スクリプトの実行を停止します。また、解析エラーの情報はほとんどなく、エラーが発生した行番号はほとんど報告されません。たとえば、事前定義されたキーワードが expression で使用されます。例: while = 10; while は事前定義されたキーワードであり、値を割り当てることはできません。 事前定義されたキーワードには、while や function などが含まれます。これらの事前定義されたキーワードを変数の名前に使用することはできません。使用しないと、コンパイラーによってエラーが報告されます。このうち、T_IFはif()、T_WHILEはwhile()、T_FORはfor()などを表します。

一般的なエラー:
セミコロン (;) で終わっていないステートメント、文字列 内の引用符の欠如など、いくつかの一般的なエラーもあります。さらに、 関数 または ループ を終了するために中括弧 ( } ) を使用することはありません。例:
function UselessFunction() {
for($i < 0; $i < 10; $ i++){
}

次のエラーが生成されます:
Parse error: parse error, Expected $ in c:program filesapache groupapachehtdocsereg2.php on line 9
関数 UselessFunction は終了に中括弧 (}) を使用していないため、 PHP コンパイラーは、ファイルの終わりに達するまで中括弧を探し続けます。コンパイラは一致する中括弧を見つけられないため、ファイルの終わりエラーを報告します。
コードの階層が正しく反映されていれば、エラー メッセージが非常に明確になります。そうしないと、コードのデバッグが非常に困難になります。したがって、コードの階層構造を必ず示すようにしてください。これにより、後続の開発者がコードを改善しやすくなります。

MySQL

エラー: 別の種類のエラー メッセージは MySQL エラーです。これは、次のような PHP 初心者を悩ませることがよくあります: 警告: 指定された引数は有効な MySQL 結果ではありません resource
in...上記報告されたエラーのある行は、 while($row = mysql_fetch_array
($result)) {} query が失敗し、mysql_fetch_array を処理できないため、パラメータ $result は有効なリソースではありません。無効な構文を含むクエリやデータベースへの接続に失敗した場合は、MySQL コンソールでテストする必要があります。 その他の簡単な間違い

  1. echo

    print の違いに注意してください: PHP の Echo と print は両方とも出力関数ですが、この 2 つの間には依然として微妙な違いがあります。 echo出力後の戻り値はありませんが、printには戻り値があり、実行失敗時にfalseを返します。したがって、通常の関数として使用できます。たとえば、 $r = print "Hello World"; を実行すると、変数 $r の値は 1 になります。さらに、コード内の echo ステートメントは print ステートメントよりもわずかに高速に実行されます。

  2. 空の文字列 ('') と
  3. NULL

    の違いに注意してください: PHP では、空の文字列と NULL はどちらも値 0 で格納されますが、前者は string
    です。後者は NULL です。文字列 ('') と NULL 値は等しいですが、型が異なることがわかります。

  4. == (等しい AND) と === (一致 AND) の違いを区別してください:
    どちらも
    比較演算子に属し、== (等しい) は値が等しいかどうかのみを比較しますが、== = (すべて等しい AND) 等しい) は、値が等しいかどうかを比較するだけでなく、型が等しいかどうかも比較します。これはより厳密です。

  5. includerequire の違いを区別する:
    include() と require() の関数は基本的に同じですが、使用方法にいくつかの違いがあります。 include() は条件付き包含関数です。 require() 無条件包含関数です。たとえば、次のコードでは、変数 $a が true の場合、ファイル a.php がインクルードされます: if($a){
    include("a.php");
    }
    and require() $a がどのような値であっても、次のコードはファイル a.php をインクルードします。
    if($a){
    require("a.php");
    }
    In
    エラー処理の観点から、include ステートメントを使用すると、include エラーが発生した場合、プログラムは include ステートメントをスキップします。エラー メッセージが表示されますが、プログラムは実行を続行します。ただし、require ステートメントでは致命的なエラーが発生します。

  6. is

    setとemptyの違いに注意してください。emptyは変数が「空」かどうかを判断するのに対し、issetは変数が設定されているかどうかを判断します。

  7. self :: と this-->: の違いを区別してください

    PHP クラスのメンバー変数またはメソッドにアクセスするとき、
    によって参照される変数またはメソッドが const (constant) または static として宣言されている場合 (staticattribute) の場合、ドメイン operator:: を使用する必要があり、参照される変数またはメソッドが const または static として宣言されていない場合は、ポインティング演算子 -> を使用します。

    以上がPHPエラー分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。