>  기사  >  백엔드 개발  >  PHP의 객체 값 전송 방법에 대한 자세한 설명

PHP의 객체 값 전송 방법에 대한 자세한 설명

王林
王林원래의
2019-09-02 17:55:553379검색

PHP의 객체 값 전송 방법에 대한 자세한 설명

변수 할당과 객체 할당의 비교

 <?php 
     // 声明一个变量并赋值 
     $a = 1; 
     // 将数据类型的值 赋值 给一个变量 
     $b = $a; 
  
     // 修改$a的值 
     $a = 2; 
     // $a和$b是两个独立的内存空间修改其中一个另一个不受影响
     echo $b; // 1 
 
     class Person
    {
         public $name;
         public $age;
    }
     // 将对象类型的数据 赋值 给一个变量
     $p = new Person;
     // 通过对属性修改值,来确定面向对象中 对象的传值方式
     $p->name = &#39;jesse&#39;;
     // 若是成功修改值,则是引用传值 
     echo $p->name; // jesse

 ?>

사례 설명:

변수 할당 방법과 객체 할당 방법을 비교해 보면, 코드 5행의 할당 방법은 "복사 할당"이고, 따라서 소스 값($a 값)이 수정되더라도 $b 값은 영향을 받지 않습니다. $a와 $b의 메모리 관계 다이어그램은 다음과 같습니다.

PHP의 객체 값 전송 방법에 대한 자세한 설명

코드의 20번째 줄은 $p 변수에 데이터 유형을 할당하고, $p를 통해 객체 내부의 값을 성공적으로 수정합니다. 변수의 전송 방법을 통해 이것이 참조 전송임을 증명합니다. 값과 메모리 관계 다이어그램은 다음과 같습니다.

PHP의 객체 값 전송 방법에 대한 자세한 설명

코드의 20번째 줄은 $p 변수에 데이터 유형을 할당하고 성공적으로 수정했습니다. $p를 통해 객체 내부의 값을 변수의 값 전달 방식과 비교해 보면 이것이 참조 전달, 메모리 관계임을 증명합니다. 그림은 다음과 같습니다.

<?php 
    class Person
    {
        public $name;
        public $age;
        // 将对象类型的数据 赋值 给一个变量
         $p = new Person;
         // 通过对属性修改值,来确定面向对象中 对象的传值方式
        $p->name = &#39;jesse&#39;;
        // 将对象赋予另一变量
        $m = $p;
        // 另一变量修改属性值
        $m->name = &#39;Marry&#39;;
         // 输出源变量 赋值变量访问内部属性的结果
        echo $p->name, $m->name;
    }
?>

코드의 12번째 줄이 가장 많습니다. 이 기사의 "키워드" 코드. 등호의 오른쪽은 개체이고 왼쪽은 변수입니다. 그러면 $m이 개체를 복사한다는 것입니다. 아니면 참조로 전달하시겠습니까? 이 코드의 메모리 관계는 다음과 같습니다.

PHP의 객체 값 전송 방법에 대한 자세한 설명

그래서 마지막 두 객체의 속성값은 Marry!!!

값이 참조로 전달되면 어떻게 될까요?

 <?php 
     class Person
     {
         public $name; 
         public $age; 
     } 
     // 将对象类型的数据 赋值 给一个变量 
     $p = new Person; 
     // 通过对属性修改值,来确定面向对象中 对象的传值方式
     $p->name = &#39;jesse&#39;;
     // 将对象赋予另一变量
     $m = &$p;
     // 另一变量修改属性值
     $m->name = &#39;Marry&#39;;
     // 输出源变量 赋值变量访问内部属性的结果
     echo $p->name, $m->name;
 ?>

PHP의 객체 값 전송 방법에 대한 자세한 설명

더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트를 방문하세요: PHP 비디오 튜토리얼

위 내용은 PHP의 객체 값 전송 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.