1

-lPHPスイッチが でエラーを検出できないのはなぜですかtest.html

$ cat test.html 
<?php
error_reporting(E_ALL);
echo "Hello, world!";

sdfsdfsdfsdf

?>
$ php -dhtml_errors=0 -ddisplay_errors=On -l test.html 
No syntax errors detected in test.html
$ php test.html 
Hello, world!PHP Notice:  Use of undefined constant sdfsdfsdfsdf - assumed 'sdfsdfsdfsdf' in test.html on line 7
$ 

未定義の関数、存在しないファイル、配列宣言の不正な構文など、他のタイプのエラーも検出されませrequire_once()ん。これはなぜでしょうか?

ありがとう。

4

2 に答える 2

3

-l構文チェックのみ (lint)

-l静的構文チェックを実行します。コードが実際に実行されることはありません。また、コードには構文エラーはありません。

ファイルの末尾の意味不明な部分は定数と見なされ (定数の有効な名前であるため)、未定義の定数は文字列表現に評価されます (そして E_NOTICE が発生します)。これはファイルの最後のステートメントであるため、セミコロンがなくても構文エラーにはなりません。

PHP は動的言語であるため、未定義の定数はコードを実行しないと検出できませんdefine()。これは結局のところ、通常の関数にすぎません。

于 2013-03-03T12:47:06.610 に答える
2

これらは構文エラーではなく、実行時エラーです。-l はファイルのみをリントします。

于 2013-03-03T12:37:05.693 に答える