라이브러리

[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() 메소드:
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 44 페이지

검색

게시물 검색