5

私が標準クラスを作成するとき、私は主に次のことを行います。

$test = null;
$test->id = 1;
$test->name = 'name';

ただし、strictモードではエラーが発生します。

したがって、明らかにそれを行う正しい方法は次のとおりです。

$test = new stdClass();
$test->id = 1;
$test->name = 'name';

だから私は疑問に思っています:

$test = null;私がやりたいことをするのは大したことではありませんか?

厳格な基準に準拠することで何が得られますか?コードが将来のバージョンでも機能し続けることを確認しますか?下位互換性が向上しますか?それは単なるベストプラクティスの問題ですか?他に何かありますか?

タイプミスを編集

4

6 に答える 6

11

やることは大したことではありませんか:$ test = null; 私がやりたいことをするために?

はい。

PHPは緩いので許可されますが、厳密モードをオンにすると、神の正直な真実が得られます。

厳格な基準に準拠することで何が得られますか?コードが将来のバージョンでも機能し続けることを確認しますか?下位互換性が向上しますか?それは単なるベストプラクティスの問題ですか?

はい。

他に何かありますか?

そうです。

于 2011-07-21T19:04:43.467 に答える
4

nullオブジェクトではありません。あなたは本質的に次のことをします:

$test = 'this is not an object';
$test->suddenly_it_is_an_object = true;

...そしてなぜ警告が表示されるのか疑問に思いますか?

于 2011-07-21T19:05:14.043 に答える
3

これを使用して:

$test = null;

あなたは(PHPエンジンとあなたのコードを読む人々の両方に)それ$testがオブジェクトであることを明確にしていません。


$testしたがって、読者として、それがオブジェクトとして使用され ていることを後で見つけるのは自然ではありません。つまり、オブジェクトとして明示的に宣言している場合よりも、コードの保守$testが容易ではありません。

于 2011-07-21T19:05:34.730 に答える
1

= null;標準に沿ってそれを実行して読むことはひどく悪いですnew ...;

于 2011-07-21T19:05:10.410 に答える
1

オブジェクトを実際に正しく宣言する習慣をつけている場合、$test = new stdClass();このstrict-modeエラーを確認すると、誤って入力$usrした場合などにPHPがスローするのが大好きな暗黙の変数宣言エラーをキャッチするのに役立ち$user、無意味な頭痛の種を減らすことができます。

于 2011-07-21T19:07:44.317 に答える
1

次のようなオブジェクトに何かをキャストできます。

$object = (object) array(
    'id' => 5,
    'name' => 'Darsstar',
    'key' => 'value',
);

しかし、新しいStdClass()は、それを行う上で依然として最も厳密な方法です。私はこの感覚を持っていますが、あなたはエラーをなくしたいだけで、この構文の方が好きかもしれません。

于 2011-07-21T19:21:04.913 に答える