Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 개체 및 참조

<시간/>

소개

PHP에서 객체는 기본적으로 참조로 전달됩니다. 여기서 reference는 두 개의 다른 변수가 동일한 값에 쓸 수 있도록 하는 별칭입니다. 개체 변수는 개체 자체를 값으로 포함하지 않습니다. 실제 개체를 찾을 수 있도록 허용하는 개체 식별자만 포함합니다. 객체가 인수로 보내지거나 반환되거나 할당될 때 다른 변수는 별칭이 아닙니다. 대신 동일한 객체를 가리키는 식별자의 복사본을 보유합니다.

예시

PHP에는 spl_object_hash()가 있습니다. 객체의 고유한 해시 ID를 반환하는 함수입니다. 다음 코드에서 동일한 객체를 참조하는 두 개의 객체 변수는 동일한 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