は、次の2つのファイルを考えてみましょうさて、これらを掘り下げてみましょうファイル:PHPリントモードは、互換性のない宣言のエラーをキャッチしません
$ php -l ParentClass.php
No syntax errors detected in ParentClass.php
$ php -l ChildClass.php
No syntax errors detected in ChildClass.php
偉大な、構文エラーはありません!
お待ちください!問題があります:
$ php ChildClass.php
PHP Fatal error: Declaration of ChildClass::foo(array $arg1) must be compatible
with ParentClass::foo(array $arg1, array $arg2) in
/home/mkasberg/php_syntax_check/ChildClass.php on line 5
なぜ、php -l
はそれをキャッチしませんでしたか?これは "コンパイル時"に捕まえることができるエラーです(ただし、PHPはコンパイルされた言語ではありません)。 php -l
のように、宣言に互換性がないことがわかります。このエラーをキャッチするようにphp -l
を実行する方法はありますか?エラーをキャッチする別のツールがありますか?
グッド観察。残念ながら、それはうまく拡張できません。この例はちょっと工夫されています - 私はずっと大きなプロジェクトでこれをやることに本当に興味があります。 – mkasberg
はい、それはちょうど 'php -l'がどのように動作するかを実証することでした。 http://stackoverflow.com/questions/378959/is-there-a-static-code-analyzer-like-lint-for-php-files – ShiraNai7
ファンは興味深いようです。おそらく、私はPHP 7にアップグレードした後にそれを使い始めるでしょう。 – mkasberg