2009-08-24 12 views
4

PHPコードを書くときに、以前に編集した部分を覚えていないと、解析エラーの追跡が困難になることがあります。私はあなたが発見したかもしれないこれらのエラーを見つけ出すための洞察力のある方法について聞くことに興味があります。PHP構文解析エラーの捜索

例:予期しない「;」、ライン上someclass.phpにT_FUNCTIONを期待して877

このあいまいなエラーが予期しない持っていることを指摘します。 PHPコードの877行を含むクラスでは、エラーは間違いなく最後の行にありません。エラーメッセージは誤解を招くことはありますか?どこからどのように見え始めますか?先頭から始めて、コードのすべての行をスキャンして問題の場所を探してみてください。

+0

単一のファイルに877行のコードがあるときは、コードを本当にリファクタリングする必要があります:) ファイルが小さいほど、そのようなバグを追跡しやすくなります。 –

+0

もちろん、最初にこれらの問題に陥る可能性を減らすさまざまな方法があります。これは最悪のシナリオの一種です。 :) – Fuu

答えて

5

まず、Eclipse PDT(これは非常に強力で、積極的に維持されていて、無料です)、OSSのように、コードを入力するとすぐにPHPエラーを強調するエディタを使用します) - コードを実行しなくても、すぐにエラーを検出できます。

Subversionプラグイン(EclipseでSVNアクセスを統合するため)と一緒に使用している場合は、「quick diff」と呼ばれるものも表示できます.SVNにコミットされていない変更された行の余白は強調表示されます - 最後のコミット以降に変更した内容を検出するのに役立ちます。それはEclipseベースだとして


注意は、しかし、それは、(私はあなたにもしたい場合は1ギガバイトであることは十分ではない、一般的に、2ギガバイトのRAMを搭載したデュアルコアが必要とされるでしょうね、かなり強力なコンピュータが必要ですあなたはかなりの時間のためのPHPでプログラミングをされているときに、あなたはおそらくより速く/よりよいそれらのメッセージを理解することができるでしょう、と場所を知るだろう


)^^、同時にいくつかの他のソフトウェアを使用見るために;-)

2

コントロールバージョンシステムを使用している場合は、ファイル/クラスの実際のバージョンと古いバージョンの違いを調べることができます。

1

できるだけ頻繁にコードを書いてください。各実行の間に追加するコードの数が少ないほど、新しいエラーの検索スペースは小さくなります。

最後にページを読み込んだときから877行のファイルのうち5行しか編集していない場合は、100行を編集した場合よりもエラーを見つけるのがずっと速いでしょう。

2

これらの種類のエラーは、通常、if、switch、while、do、function、classなどの "{"で囲まれています。私は言葉「頻繁」を使用

 
php -l file.php 

注:

2

またどんなにあなたが使用しているものエディタ頻繁に構文チェックを行うことができます。あなたがVimを使用している場合、あなたはファイル.vimrcに以下の便利を見つけることがあります。

 
map <F12> <ESC>:!php -l %<CR> 

ちょうどその場で構文をチェックするために、任意の時点でF12を押してください。

1

PHPの構文エラーに関するレポートはかなり良いと思っていますが、構文エラーがほとんど何でもできることを考えれば、可能なことは明らかに制限があります。一般に、あなたのエラーはおそらく報告された行の近くにあります。

class Foo { 
    function blah() { 
    }; 
} 

または多分:例えば、この場合、私はあなたのような何かを行っていることを前提としています

class Foo { 
    protected $foo;; 
} 

セミコロンは、これらの状況の両方で違法です。

0

Zend Studioには、ブレークポイントの設定、コードのステップ実行、変数/パラメータの検査など、さまざまなオプションが用意されています。もちろん、このすべてには価格が付いています。 =

関連する問題