1

簡単な質問です。チュートリアルで、単純な if ステートメントが次のように記述されているのを見てきました。

if($vest) echo $vest->naslov

しかし、そのように書くと、エラー Undefined variable: vestが表示され、コードを昔ながらの方法で書かなければなりません。

if(isset($vest)) echo $vest->naslov

これを規制するphp.iniファイルの設定はありますか? 現在、Ubuntu(最新バージョン)でLAMPを使用しています。

4

6 に答える 6

4

E_STRICT変数をチェックする前に変数を宣言していないと文句を言います。でオフにすることでこれを修正できますが、前もって変数を単純に宣言することをお勧めします。関数の先頭でこれを行うだけです。E_STRICTphp.ini

$vest = null;

残りのロジックの前に。これは、より現実に近い方法でプログラムを実行する方法を考える必要があるため、良い方法です。

于 2012-11-23T20:29:57.950 に答える
2

に下げることもできますがerror_reportingE_ALL ^ E_NOTICE実際には追跡が困難な多くのバグにつながる可能性がある悪い習慣です。タイプミスの場合$vestはわかりません。条件は決して機能しません。

代わりに、どの変数が定義されていてどの変数が定義されていないかを常に把握できるように、アプリケーションを構築するようにしてください。そうすれば、短縮バージョンを心配することなく使用できます。

于 2012-11-23T20:29:18.283 に答える
1

エラー報告レベルを下げてエラーを無視することはできますが、それは危険なプログラミング手法になります。

これを入力するとき:if($vest)、あなたは本当に$vest==nullor$vest==''またはor$vest===''またはisempty($vest)or$vest===trueまたはisset($ vest) `を意味しますか?

ifステートメントには多くの用途があります。コードで、自分が何をしているのかを明確にする必要があります。スクリプトの先頭にある変数を初期化するのは本当に難しいですか?

于 2012-11-23T20:33:14.567 に答える
1

変数を負の状態に宣言することをお勧めします。変数が設定されていない場合、または変数がfalseに設定されている場合は、省略形が意図したとおりifに機能します。

エラーを無視するのは悪いことです(エラーは理由があり、コードは読みやすく、したがって保守可能です)。

于 2012-11-23T20:34:19.930 に答える
1

Undefined variable: vestエラーは、変数$vestが認識されていないことを意味します。isset($vest)エラーにならない理由は、既に設定されているisset()かどうかを確認するためです。$vestしたがって、 if(isset($vest)) は の戻り値に対してブール値チェックを行いますisset($vest)

を使用するだけの場合if($vest)、php$vestは既に設定されていると見なし (実際に$vestはまだ未定義である場合)、ブール値のチェック操作を行います。

于 2012-11-23T20:29:46.943 に答える
1

if($foo)if(isset($foo))は同じものではなく、同じ意味で使用すべきではありません。

if($foo)$footrue と評価されるかどうかをチェックします。別の書き方は次のとおりif( (bool) $foo === true )です。したがって、$fooが未定義の場合は、PHP からの通知が期待されます。

一部の人々が示唆したように、通知をオフにするのではなく、正しい方法でコードを記述してください。が定義されているかどうかを確認する$fooには、常に を使用しますisset()

于 2012-11-23T20:40:05.140 に答える