2011-11-10 12 views

答えて

1

デバッグといくつかのgotchasの要約。

変数がPHPでどこに存在するかを判断するプログラム的な方法はありません。

良いデバッグ能力はあなたの友人です。投稿された他の回答をチェックしてください。ここにリキャップ:

  1. debug_print_backtrace() - どのファイルが含まれているかを知らせます。
  2. サイトのトップレベルからgrep -rn 'variable_name' .を使用して、存在する場所を確認してください。
  3. var_dump($variable)を一度に1つずつ追加すると、変数がさまざまな状態にあったことを追跡するのに役立ちます。


優れたデバッガを使用するとかなり助けになります。広く使用されているデバッガ拡張の1つがXdebugです。探すために

2つの潜在的な落とし穴があります:これらのeval()extract()
の両方が「魔法」の変数が前になかったことに存在する可能性があります。

もちろん、この問題を解決する最も良い方法は、グローバル変数を持たないことです。あるいは、できるだけ少なくしてください。それがMVCであろうとなかろうと、あなたのコードへの明確なフローを持つことができます。次に、コードが実行される順序と、変数がインスタンス化されたり渡されたりする順序を知ることができます。

5

良い出発点はdebug_print_backtrace()の機能です。変数がどこに渡されたかはトレースされませんが、すべての関数と行番号付きのインクルード/必須ファイルが表示されます。

+0

function_name($ variable)のように使用して、変数がどこから来ているかを確認することができます。私はdebug_print_backtrace()を試したところ、どのページがインクルードされているかを表示していましたが、ページが多すぎるため、すべてをチェックすることはできません。 – user843812

2

backtracingしているページで$ _POST/$ _ GET変数をチェックしないのはなぜですか? grep/searchユーティリティを使用して変数を見つけることができない場合は確かですか?あなたは、Linuxにしている場合は

+0

私はgrepを使って$変数の元を検索しましたが、正しい場所かどうかはわかりません。別のことは、$変数が複数のページで渡されていることです。私はすべてのページを知りたいのです。 – user843812

+0

おそらく、各ページにその変数の値を表示するprint文を追加します。これをプログラムを使用して実行したい場合は、[link] http://stackoverflow.com/questions/1538094/how-to-append-text-to-multiple-filesが役立ちます。もう1つの方法は、ページに名前を付けてファイルに変数値を追加するコードにピースを追加することです。ページを移動して各ページの変数値を確認した後、このファイルを確認することができます – questborn

1

、次のように入力します。

grep -rn "variable_name" . 

は、変数が参照されていることを、ファイル(およびそれらのファイルの行番号)を表示します。

私はいつも私の前提もテストしたい。あなたは変数がページ上で変更される可能性があると思われるのであれば、次のように入力します。

var_dump($variable_name); 

を値を表示するには。これを動かすことで、その変数をゼロにして、設定されている変数のソースを見つけることができます。

私は役立つことを願っています...

関連する問題