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

PHPオブジェクトとリファレンス


はじめに

PHPでは、オブジェクトはデフォルトで参照によって渡されます。ここで、参照はエイリアスであり、2つの異なる変数が同じ値に書き込むことができます。オブジェクト変数には、オブジェクト自体が値として含まれていません。実際のオブジェクトを見つけるために使用できるオブジェクト識別子のみが含まれています。オブジェクトが引数によって送信されるか、返されるか、割り当てられる場合、異なる変数はエイリアスではありません。代わりに、同じオブジェクトを指す識別子のコピーを保持します。

PHPにはspl_object_hash()があります オブジェクトの一意のハッシュIDを返す関数。次のコードでは、同じオブジェクトを参照する2つのオブジェクト変数が同じIDを返します

<?php
class test1{
   public $name;
}
$obj1=new test1();
echo "ID of obj1: " . spl_object_hash($obj1) . "\n";
$obj2=$obj1;
echo "ID of obj2: " . spl_object_hash($obj2);
?>

出力

結果は、両方の変数のIDが同じであることを示しています

ID of obj1: 000000004355dda6000000006f04b1a7
ID of obj2: 000000004355dda6000000006f04b1a7

オブジェクト変数の参照を作成するとき、名前の前に&を付けることで、プロパティの変更は自動的に参照変数に反映されます

<?php
class test1{
   public $name;
}
$obj1=new test1();
echo "ID of obj1: " . spl_object_hash($obj1) . "\n";
$obj2=&$obj1;
echo "ID of obj2: " . spl_object_hash($obj2) . "\n";
$obj1->name="Amar";
echo "name: " .$obj2->name;
?>

出力

上記のコードは、出力に続いて名前を返すようになりました

ID of obj1: 00000000163cf0b8000000003ad0ed93
ID of obj2: 00000000163cf0b8000000003ad0ed93
name: Amar

  1. PHPのmethod_exists()関数

    method_exists()関数は、クラスメソッドが存在するかどうかを確認します。 構文 method_exists(object, name_of_method) パラメータ オブジェクト −オブジェクトインスタンスまたはクラス名 name_of_method −メソッド名 戻る method_exists()関数は、method_nameで指定されたメソッドが指定されたオブジェクトに対して定義されている場合はTRUEを返し、それ以外の場合はFALSEを返します。 例 以下は例です- <?php $directory = new Directory('

  2. PHPのget_object_vars()関数

    get_object_var()関数は、指定されたオブジェクトのプロパティを取得します。指定されたオブジェクトに対して定義されたオブジェクトプロパティの連想配列を返します。 構文 get_object_vars(object) パラメータ オブジェクト −オブジェクトインスタンス。 戻る get_object_var()関数は、指定されたオブジェクトに対して定義されたオブジェクトプロパティの連想配列を返します。プロパティに値が割り当てられていない場合は、NULL値で返されます。 例 以下は例です- <?php    class Point2D { &nb