라이브러리
[PHP] WeakReference::get - 약하게 참조된 객체를 가져옵니다.
PHP WeakReference
PHP 7.4 버전부터 WeakReference 클래스가 추가되었습니다. WeakReference는 PHP의 WeakReference 클래스를 사용하여 객체에 대한 강한 참조를 유지하지 않도록 하는 클래스입니다.
WeakReference::get()
WeakReference::get() 메소드는 WeakReference 객체가 참조하는 객체를 반환합니다. 만약 객체가 GC(Garbage Collector)로 인해 삭제된 경우 null을 반환합니다.
# 예제
#hostingforum.kr
php
class Person {
public $name;
function __construct($name) {
$this->name = $name;
}
}
$person = new Person('John');
$weakReference = new WeakReference($person);
$person = null; // 객체를 강한 참조에서 해제
var_dump($weakReference->get()); // null
위 예제에서 Person 객체를 강한 참조에서 해제한 후 WeakReference::get() 메소드를 호출하면 null이 반환됩니다.
# 예제 2
#hostingforum.kr
php
class Person {
public $name;
function __construct($name) {
$this->name = $name;
}
}
$person = new Person('John');
$weakReference = new WeakReference($person);
$person2 = $weakReference->get();
$person = null; // 객체를 강한 참조에서 해제
var_dump($person2->name); // John
위 예제에서 Person 객체를 강한 참조에서 해제한 후 WeakReference::get() 메소드를 호출한 후 반환된 객체를 사용하여 객체의 속성을 접근할 수 있습니다.
WeakReference::isWeaklyReferenced()
WeakReference::isWeaklyReferenced() 메소드는 WeakReference 객체가 참조하는 객체가 GC로 인해 삭제되었는지 여부를 반환합니다.
# 예제
#hostingforum.kr
php
class Person {
public $name;
function __construct($name) {
$this->name = $name;
}
}
$person = new Person('John');
$weakReference = new WeakReference($person);
$person = null; // 객체를 강한 참조에서 해제
var_dump($weakReference->isWeaklyReferenced()); // bool(true)
위 예제에서 Person 객체를 강한 참조에서 해제한 후 WeakReference::isWeaklyReferenced() 메소드를 호출하면 true가 반환됩니다.
WeakReference::isReferenced()
WeakReference::isReferenced() 메소드는 WeakReference 객체가 참조하는 객체가 GC로 인해 삭제되지 않았는지 여부를 반환합니다.
# 예제
#hostingforum.kr
php
class Person {
public $name;
function __construct($name) {
$this->name = $name;
}
}
$person = new Person('John');
$weakReference = new WeakReference($person);
var_dump($weakReference->isReferenced()); // bool(true)
위 예제에서 WeakReference::isReferenced() 메소드를 호출하면 true가 반환됩니다.
WeakReference::get() vs WeakReference::isWeaklyReferenced()
WeakReference::get() 메소드는 WeakReference 객체가 참조하는 객체를 반환합니다. 만약 객체가 GC로 인해 삭제된 경우 null을 반환합니다. 반면 WeakReference::isWeaklyReferenced() 메소드는 WeakReference 객체가 참조하는 객체가 GC로 인해 삭제되었는지 여부를 반환합니다.
# 예제
#hostingforum.kr
php
class Person {
public $name;
function __construct($name) {
$this->name = $name;
}
}
$person = new Person('John');
$weakReference = new WeakReference($person);
$person = null; // 객체를 강한 참조에서 해제
var_dump($weakReference->get()); // null
var_dump($weakReference->isWeaklyReferenced()); // bool(true)
위 예제에서 Person 객체를 강한 참조에서 해제한 후 WeakReference::get() 메소드를 호출하면 null이 반환되고, WeakReference::isWeaklyReferenced() 메소드를 호출하면 true가 반환됩니다.
결론
PHP의 WeakReference 클래스는 객체에 대한 강한 참조를 유지하지 않도록 하는 클래스입니다. WeakReference::get() 메소드는 WeakReference 객체가 참조하는 객체를 반환하고, WeakReference::isWeaklyReferenced() 메소드는 WeakReference 객체가 참조하는 객체가 GC로 인해 삭제되었는지 여부를 반환합니다. WeakReference::get() 메소드는 객체가 GC로 인해 삭제된 경우 null을 반환합니다.
참고자료
* PHP WeakReference 클래스:
* PHP WeakReference::get() 메소드:
* PHP WeakReference::isWeaklyReferenced() 메소드:
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.