라이브러리
[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`이 지원됩니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.