PHP の構文エラーチェックテクニックを素早くマスター_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:34:15
オリジナル
1145 人が閲覧しました

エラー サプレッサーは、echo と同様に、関数ではないため、変数関数メソッドを使用して呼び出すことはできません。たとえば、

$func = 'eval'

$func() などの呼び出しは無効です。 。そのような関数を自分で定義すると、問題が発生する可能性があります。 eval がキーワードだからです。
eval 呼び出しは include と似ています。インクルードされたファイルに明示的な戻りがない場合は、null が返されます。チェックする必要があるファイルを直接評価すると、チェックされたファイル内のコードが実行されます。これは、ファイルの構文が正しいかどうかをチェックするだけで済みます。 チェックするファイルの前に return ステートメントを追加して、コードを事前に飛び出して、後続のコードが実行されないようにすることができます。はい、それだけです。コードは次のとおりです。

<ol class="dp-xml">
<li class="alt">
<span class="tag"><</span> ?PHP  </li><li><span>if(!function_exists('</span>PHP<span>_check_syntax')) {  </span></li><li class="alt"><span>function </span>PHP<span>_check_syntax($file_name, <br />&$</span><span class="attribute">error_message</span><span> = </span><span class="attribute-value">null</span><span>) {  </span></li><li><span>$</span><span class="attribute">file_content</span><span> = </span><span class="attribute-value">file_get_contents</span><span>($file_name);  </span></li><li class="alt"><span>$</span><span class="attribute">check_code</span><span> = </span><span class="attribute-value">"return true; ?>"</span><span>;   </span>
</li>
<li>
<span>$</span><span class="attribute">file_content</span><span> = $check_code . <br>$file_content . "</span><span class="tag"><</span><span> ?</span>PHP<span> ";  </span></li><li class="alt"><span>if(!@eval($file_content)) {  </span></li><li><span>$</span><span class="attribute">error_message</span><span> = </span><span class="attribute-value">"file: "</span><span> . <br />realpath($file_name) . " have syntax error";  </span></li><li class="alt"><span>return false;  </span></li><li><span>}  </span></li><li class="alt"><span>return true;  </span></li><li><span>}  </span></li><li class="alt"><span>}  </span></li><li><span>if(!</span>PHP<span>_check_syntax("file.</span>PHP<span>", $msg)) {  </span></li><li class="alt"><span>echo $msg;  </span></li><li><span>}  </span></li><li class="alt"><span>else {  </span></li><li><span>echo "Woohoo, OK!";  </span></li><li class="alt"><span>}  </span></li><li><span class="tag"><</span><span> ?</span>PHP<span>  </span></li><li class="alt"><span>foreach:: </span><span class="attribute">a</span><span> =</span><span class="tag">></span><span> b  </span>
</li>
<li>
<span class="tag">?></span><span>  </span>
</li>
</ol>
ログイン後にコピー

set_error_handler 処理関数では Parse エラーを処理できないため。この例外はキャッチできません。そのため、エラーを抑制するために @ が使用されます。この場合の問題は、詳細なエラー情報を取得できないことです。 ただし、現時点で必要な機能は、構文が正しいかどうかを確認することだけです。間違っている場合は、テンプレート ファイルを再コンパイルします。構文エラーについては、Web ページを表示するときに自然に表示されます。

PHP で構文エラーをチェックする最良の方法は、放棄された PHP_check_syntax メソッドを PHP に戻すことです。次回はなぜこの機能が削除されたのかを考察していきます。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446009.html技術記事エラー抑制機能は、echo と同様に、関数ではないため、変数関数メソッドを使用して呼び出すことはできません。たとえば、$func = eval $func() などの呼び出しは無効です。それは...
について言及します
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート