⊗ppOpAdPBR 23 of 107 menu

PHPのOOPにおけるオブジェクトの参照渡し

以下のような User クラスがあるとします:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

このクラスのオブジェクトを作成します:

<?php $user = new User('john', 30); ?>

ここで次の状況を想像してください:変数 $user の値を、 別の変数、例えば $test に代入したいとします。

もしこれがオブジェクトではなく、文字列、数値、配列などの プリミティブ についての話であれば、変数 $test には変数 $user の値のコピーが入ります。

これは、その後いずれかの変数を変更しても、 もう一方の変数の値は変わらないことを意味します。例を見てみましょう:

<?php $user = 1; $test = $user; // 変数 $test には 1 が入る $test = 2; // 変数 $test は 2 になるが、$user は依然として 1 のまま ?>

オブジェクトの場合は異なります。別の変数に代入する際、 オブジェクトはコピーされず、参照によって渡されます。 つまり、これら両方の変数は同じ1つのオブジェクトを値として持つことになります。 これは重要な結果をもたらします:ある変数を使ってオブジェクトのプロパティを変更すると、 もう一方の変数にも同じ変更が反映されます。

実際に見てみましょう。 ユーザーのオブジェクトを作成します:

<?php $user = new User('john', 30); ?>

このオブジェクトを別の変数に代入します:

<?php $test = $user; ?>

変数 $testname プロパティを変更します。

<?php $test->name = 'eric'; ?>

共通のオブジェクトが変更されたことを確認しましょう。 変数 $user から name プロパティを出力します:

<?php echo $user->name; // 'eric' と出力されます! ?>

以下のプロパティを持つ Product クラスを作成してください:name, price

Product クラスのオブジェクトを作成し、 変数 $product1 に代入してください。

変数 $product1 の値を変数 $product2 に代入してください。 両方の変数が同じオブジェクトを参照していることを確認してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否