私と同じように、誰もが次のような PHP コードをよく目にすると思います:
$user = new stdClass(); $user->name = 'gouki';
このコードは何に使われますか?
マニュアルを開いて stdClass を検索すると、マニュアルにはほとんど紹介がありませんが、再度 Google で検索すると、ほぼすべて英語の説明が表示されます。
実際、stdClass が普及したのは PHP5 になってからです。 stdClass も zend の予約クラスです。それ以外の効果はないようです。こちらもほとんど説明がありません。
あるいは、次のように理解することもできます。stdClass は PHP の基本クラスであり、ほとんどすべてのクラスがこのクラスを継承するため、いつでも新しいクラスになる可能性があり、この変数はオブジェクトになる可能性があります。同時に、この基本クラスにはメソッドが存在しないという特別な機能があります。
new stdClass() の変数を使用する場合、 $a->test() を使用することはできません。
または、PHP5 オブジェクトの一意性により、オブジェクトは呼び出される場所で参照されるため、消費するリソースが少なくなります。他のページで値を割り当てると、コピーを参照するのではなく、値が直接変更されます。
例:
$user = new stdClass(); $user->name = 'gouki'; $myUser = $user; $myUser->name = 'flypig';
PHP4 時代の場合、そのようなコードはシステム リソースを消費します。理由:
$myUser = $user;
これによりコピーが作成されます。したがって、PHP4 では、常に次のように使用されます:
$myUser = & $user;
なぜ配列を使用しないのかと言う人もいます。配列の方が便利ではないでしょうか?また、PHP のような弱い型指定のプログラムの場合は、配列を使用するのが最も便利です。
確かに。配列はプログラムで使用するのに最も便利なはずですが、配列が参照されるたびに ($a = $b)、実際にはコピーが作成され、配列が設定解除された後もメモリを占有します (これは私が行ったことです)。聞いた) 人々はそれを言っています、私はそれをテストしたことがありません...そして、それをテストする方法がわかりません、誰か知っているなら、教えてください、ありがとう)
ただし、標準クラスには関数 arrayobject もあります。配列を直接オブジェクトに変換できるSPLのライブラリも良いですね。
PHP の stdClass クラスの理解に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。