2012-08-01 32 views
5
<?php 
// $smith = ""; 
    $submit ="button_a"; 

    if($submit == "button_a") { 
     $smith = "button_a"; 
    } 
    elseif($submit == "button_b"){ 
     $smith = "button_b"; 
    } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
</head> 
<body> 

<p> 
    <?php echo($smith); ?> 
</p> 

</body> 
</html> 

PHPSTORMは、各ファイルにフラグを設定しています:赤色 - エラー、黄色 - 警告、緑色 - OK。phpstorm警告PHP変数が定義されていない可能性があります

ヘッダーの上のPHPは$ smithに値を割り当てます。体の中で、私は$ smithについて、それが未定義かもしれないと言って警告を受ける。変数のすべてをPHPコードの先頭に宣言すると($ smith = "";)、それはうれしい(警告なし)。

これらの警告を防ぐために何かすべきことはありますか?

私は、それぞれの人にコメントを付けないと言って、それをチェックしないと言って、私はそれらをすべてオフにしたくないという考えが好きです。

これは、4つまたは5つの変数を定義するdb_login.phpファイルをインクルードすると、多く発生します。私はWAMP、MAMP、そして本当のホースのために異なるdb_login.phpファイルを持っています。

どのような考えですか?

+2

で私は徹底的に常に使用前に変数を初期化/宣言カントー推薦された...そんなに簡単にデバッグすることができます。 – Brian

+0

...設定にグローバル変数を使用しないでください(例えば、DBの詳細など - ヘルプの静的なクラス) - 自分のコードの場合は、もちろん:) – LazyOne

答えて

6

ええ、この警告を取り除くためにできることは2つあります。あなたは言った:それはセットの場合は、それを印刷するとき

$smith = ""; 
if($submit == "button_a") { 
    $smith = "button_a"; 
} 
elseif($submit == "button_b"){ 
    $smith = "button_b"; 
} 

またはチェック:

<?php 
    if(isset($smith)) { 
     echo($smith); 
    } 
?> 

しかし、これは単なる警告であり、あなたがその条件があることを知らせている$smithウォン($submit"button_a"ではなく、"button_b"でない場合)。その状態が発生した場合は、設定されていないときは$smithと表示されます。これはスクリプトのバグである可能性があります。

+1

PHPSTORMは思ったよりもスマートです。 elseifをelseに変更して、コード内のすべてのパスが値を割り当てるようにすると、うれしいことです。データベース、ユーザー、パスワード、テーブルなどを定義するdb_loginインクルードファイルについてはどうでしょうか?インクルードファイルを「調べて」、それらをあらかじめ定義する必要はありません。 – mkstlwtz

+0

そのため、 '$ smith'が定義されない条件はありません。実際には役立ちます(IMO)。定義されていない変数にアクセスする状況が存在することがわかります。バグの条件( '$ submit'は' button_a'や 'button_b'ではない)でスクリプトを実行した場合にのみ、PHPからこの情報を得ることができます。インクルードファイルの問題については、以下のDreenの答えを参照してください。 – nickb

14

require on文が変数アクセスの前に同じ実行フローにある場合、未定義変数レポートを無視するようPHPStormに指示できます。 '未定義変数' - 'include'と 'require'ステートメントを無視してください。これはデフォルトで有効になっているため、無効にする必要があります。

enter image description here

注:設定はFile > Settings (Ctrl+Alt+S) > Project Settings > Inspections > PHP > Undefined > Undefined variable

+0

それは完璧です。ありがとうございました。 – mkstlwtz

+3

これらの設定はどこにありますか? – bafromca

+1

ファイル>設定(Ctrl + Alt + S)>プロジェクト設定>インスペクション> PHP>未定義>未定義変数 – Kobra

関連する問題