概要: この記事では、PHP 開発者がコーディング時に見落としがちな、または注意を払わない傾向にある小さな間違いやエラーを取り上げます。
変数宣言
次のようにステートメント内で変数を宣言すると、コンパイラは最初にステートメントの右半分の値を見つけます。エラーが発生することがよくあります。間違った構文を使用すると、解析エラーが発生します。
解析エラー
例えば、 解析エラー:解析エラー、予期せぬ T_WHILE in c:program filesapache groupapachehtdocsscript.php on line 19 前回のエラーが確定するたびに次々と解析エラーが出続け、最初の Stop で PHPエラーを解析した後にスクリプトを実行します。また、解析エラーの情報はほとんどなく、エラーが発生した行番号はほとんど報告されません。たとえば、定義済みのキーワードが式で使用されている場合、たとえば、 while=10; while は定義済みのキーワードであるため、値を割り当てることはできません。事前定義されたキーワードには、while、function などが含まれます。これらの事前定義されたキーワードを変数の名前に使用することはできません。使用しないと、コンパイラによってエラーが報告されます。このうち、T_IFはif()、T_WHILEはwhile()、T_FORはfor()などを表します。
一般的なエラー
ステートメントがセミコロン (;) で終わっていない、文字列内の引用符が欠落しているなど、いくつかの一般的なエラーもあります。さらに、関数またはループを終了するために中括弧 (}) を使用しない場合、たとえば: function UselessFunction(){for($i
MySQL Error
もう 1 つのタイプのエラー メッセージは MySQL エラーで、次のような PHP 初心者を非常に悩ませることがよくあります。 while($row=mysql_fetch_array($result)){}クエリが失敗し、mysql_fetch_array を処理できないため、パラメータ $result は有効なリソースではありません。クエリの構文が無効であるか、データベースへの接続が失敗する場合は、MySQL コンソールにアクセスしてテストする必要があります。
echoとprintの違いに注意してください
PHPのEchoとprintはどちらも出力関数ですが、それでも両者には微妙な違いがあります。 echo出力後の戻り値はありませんが、printには戻り値があり、実行失敗時にfalseを返します。したがって、これは通常の関数として使用できます。たとえば、$r=print "Hello World" が実行されると、変数 $r の値は 1 になります。さらに、コード内の echo ステートメントは print ステートメントよりもわずかに高速に実行されます。
空文字列('')とNULLの違いに注意してください
PHPでは空文字列とNULLはどちらも値0で格納されますが、型が異なります。前者は文字列、後者はNULLです。 、表示される文字列 ('') と NULL 値は同じですが、型が異なります。
== (等しい) と === (すべて等しい) の違いを区別してください
どちらも比較演算子で、 == (等しい) は値が等しいかどうかのみを比較しますが、 === (すべて等しい) は値が等しいかどうかだけを比較しません値を比較します。値が等しいかどうかに関係なく、型の等しいかどうかも比較されますが、これはより厳密です。
include と require の違いを明確にする
include() と require() の関数は基本的に同じですが、使用方法にいくつかの違いがあります。 include() は条件付き包含関数ですが、require() は無条件です。インクルージョン機能。たとえば、次のコードでは、変数 $a が true の場合、ファイル a.php がインクルードされます: if($a){include("a.php");} および require() は include( )、$ に関係なく、 a がどのような値であっても、次のコードにはファイル a.php がインクルードされます: if($a){require("a.php");} エラー処理の観点からは、include ステートメントを使用します。インクルードエラーが発生した場合、プログラムは include ステートメントをスキップします。エラーメッセージが表示されますが、プログラムは実行を続行します。ただし、require ステートメントでは致命的なエラーが発生します。
issetとemptyの違いに注意してください
Emptyは変数が「空」かどうかを判断するのに対し、issetは変数が設定されているかどうかを判断します。
self:: と this の違いを明確にしてください-->
PHP クラスのメンバー変数またはメソッドにアクセスするとき、参照される変数またはメソッドが const (定数) または static (静的プロパティ) として宣言されている場合、ドメイン演算子:: を使用する必要があり、参照される変数またはメソッドが const または static として宣言されていない場合は、ポインター演算子 -> を使用します。