Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP WeakReference 클래스

<시간/>

소개

약한 참조를 사용하면 개체가 파괴되는 것을 방지하지 않는 개체에 대한 참조를 유지할 수 있습니다. 캐시와 같은 구조를 구현하는 것은 약한 참조로 수행할 수 있습니다.

약한 참조는 가비지 수집기가 개체를 수집하는 것을 방지하지 않는다는 점을 제외하면 일반 참조와 유사합니다. 해당 개체에 대한 강력한 참조가 발견되지 않으면 메모리에서 즉시 제거됩니다. 이렇게 하면 메모리 문제 없이 캐시의 대부분의 이점을 구현할 수 있습니다.

WeakReference 클래스는 PHP 7.4에서 도입되었습니다. 이 버전 이전에는 weakref에서 얻은 것과 동일한 효과가 있었습니다. 확대. WeakReference 클래스의 구조는 다음과 같습니다.

구문

WeakReference {
   /* Methods */
   public __construct ( void )
   public static create ( object $referent ) : WeakReference
   public get ( void ) : ?object
}

방법

공개 WeakReference::__construct( void ) — WeakReference 클래스의 인스턴스화를 허용하지 않습니다. WeakReference::create() 팩토리 메소드로 인스턴스화할 수 있습니다.

공개 정적 WeakReference::create(개체 $referent) :WeakReference — 새로운 WeakReference를 생성합니다.

공개 WeakReference::get ( void ) :?객체 — 약하게 참조된 개체를 가져옵니다. 객체가 이미 소멸된 경우 NULL이 반환됩니다.

발전기 예

다음 예제에는 myclass의 객체가 있습니다. WeakReference 객체에 대한 하나의 참조를 보여줍니다. 그러면 개체가 설정 해제됩니다. 이제 WeakReference는 NULL을 반환합니다.

예시

<?php
class myclass{
   function Hello(){
      echo "Hello";
   }
}
$obj = new myclass();
$ref = WeakReference::create($obj);
var_dump($ref->get());
unset($obj);
var_dump($ref->get());
?>

출력

위의 프로그램은 다음과 같은 출력을 보여줍니다.

object(myclass)#1 (0) {
}
NULL