라이브러리

[PHP] ocicollassign - OCICollection::assign의 별칭




PHP에서 Object Copying과 Object Assignment


PHP에서 `object`는 참조 타입으로, 할당 시 참조가 복사되는 것이 아닌, 실제 객체가 복사되는 것이 아님을 알아야 합니다.

# Object Copying


PHP에서 `object`는 복사되지 않습니다. 다음 예제를 통해 이해해 보겠습니다.

#hostingforum.kr
php

class Person {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }

}



$person1 = new Person('John');

$person2 = $person1;



$person2->name = 'Jane';



echo $person1->name . "
"; // Jane



위 예제에서 `$person2`는 `$person1`의 참조를 가리키고 있기 때문에, `$person2`를 통해 `$person1`의 속성을 변경하면 `$person1`의 속성이 변경되는 것을 볼 수 있습니다.

# Object Assignment


PHP에서 `object`는 할당 시 참조가 복사됩니다. 다음 예제를 통해 이해해 보겠습니다.

#hostingforum.kr
php

class Person {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }

}



$person1 = new Person('John');

$person2 = clone $person1;



$person2->name = 'Jane';



echo $person1->name . "
"; // John

echo $person2->name . "
"; // Jane



위 예제에서 `$person2`는 `$person1`의 객체를 복사한 후 할당한 것을 볼 수 있습니다. `$person2`를 통해 `$person1`의 속성을 변경하면 `$person1`의 속성이 변경되지 않는 것을 볼 수 있습니다.

# Object Assign


PHP 7.4부터는 `object`에 대해 `assign` 연산자가 지원됩니다. 다음 예제를 통해 이해해 보겠습니다.

#hostingforum.kr
php

class Person {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }

}



$person1 = new Person('John');

$person2 = new Person('Jane');



$person2 = $person1;



$person2->name = 'Jane';



echo $person1->name . "
"; // John

echo $person2->name . "
"; // Jane



위 예제에서 `$person2`는 `$person1`의 객체를 할당한 후 `$person1`의 속성을 변경하면 `$person1`의 속성이 변경되지 않는 것을 볼 수 있습니다.

# Opcional Class Assignment


PHP 8.0부터는 `object`에 대해 `opcional class assignment`이 지원됩니다. 다음 예제를 통해 이해해 보겠습니다.

#hostingforum.kr
php

class Person {

    public $name;



    function __construct($name) {

        $this->name = $name;

    }

}



$person1 = new Person('John');

$person2 = new Person('Jane');



$person2 = $person1 ?? new Person('Jane');



$person2->name = 'Jane';



echo $person1->name . "
"; // John

echo $person2->name . "
"; // Jane



위 예제에서 `$person2`는 `$person1`의 객체를 할당한 후 `$person1`의 속성을 변경하면 `$person1`의 속성이 변경되지 않는 것을 볼 수 있습니다.

결론


PHP에서 `object`는 복사되지 않으며, 할당 시 참조가 복사됩니다. PHP 7.4부터는 `object`에 대해 `assign` 연산자가 지원되며, PHP 8.0부터는 `opcional class assignment`이 지원됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 366 페이지

검색

게시물 검색