PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHP 5でオブジェクトを参照渡しするには?仕組みと挙動をわかりやすく解説

PHPにおけるリファレンス(参照)とは、いわば「エイリアス(別名)」のようなもので、2つの異なる変数が同じ値を書き込めるようにする仕組みです。

ここで重要なのが、PHP 5におけるオブジェクトの扱いです。PHP 5では、オブジェクト型の変数はオブジェクトそのものを値として保持しているわけではありません。実際に保持しているのは「オブジェクト識別子」と呼ばれるもので、この識別子を使ってオブジェクトアクセッサが実体のオブジェクトを見つけ出せるようになっています。

したがって、オブジェクトを関数の引数として渡したり、戻り値として受け取ったり、別の変数に代入したりしても、それらの変数同士がエイリアスになるわけではありません。各変数には、同じオブジェクトを指し示す識別子のコピーが格納されるだけです。

コード例

$my_var = new class_name;
echo $my_var->get_class_name(5)->value;
$my_var->test();
echo $my_var->get_class_name(5)->value;

出力結果

上記のコードを実行すると、次のような出力が得られます。

class_name #5

ポイント:参照渡しではなく「参照による代入」

この動作は厳密には「参照渡し(pass by reference)」ではありません。正しくは「参照による代入(assignment by reference)」と呼ばれるものです。

PHP 5では、オブジェクトに対して参照による代入がデフォルトの動作として採用されています。そのため、開発者は特別な記述をしなくても、複数の変数や引数が同一のオブジェクトインスタンスを操作できるという利点があります。ただし、変数そのものがエイリアス化されているわけではない点は理解しておきましょう。

  1. PHPの配列をJavaScriptに渡す方法をわかりやすく解説

    PHPの配列をJavaScriptで扱いたい場合、json_encode関数を使うのが最も一般的な方法です。PHP側で配列をJSON形式に変換して出力することで、そのままJavaScriptの変数として利用できるようになります。json_encodeを使った基本的な方法以下のように、PHPの変数をjson_encodeで変換し、scriptタグ内に出力するだけで配列を渡せます。<script>    var var_name = <?php echo json_encode($php_variable); ?>;</scri

  2. 【Swift】NSUserDefaultsにカスタムオブジェクトを保存・復元する方法を徹底解説

    この記事では、アプリケーション内でカスタムオブジェクトをNSUserDefaultsに保存する方法を解説します。保存手順を学ぶ前に、まず「カスタムオブジェクトとは何か」を確認しておきましょう。カスタムオブジェクトとは、Int、Double、Stringといったネイティブなデータ型ではなく、独自に定義したクラスや構造体などのデータのことを指します。NSUserDefaultsへのデータ保存は、次の3つのステップで行います。1. カスタムオブジェクトの作成まず、name(名前)とage(年齢)の2つの変数を持つ、Personというカスタムクラスを作成します。NSUserDefaultsに保存するに