PHP 약인용 요약

2460 단어 PHP약인용
이전의 문장에서 우리는 이미 인용과 인용 전치와 관련된 지식을 배운 적이 있다.우리는 PHP에 순수한 인용 (바늘) 이 없고 대상이든 인용 기호 & 부여 변수든 모두 하나의 기호표에 대한 인용이라는 것을 안다.오늘날 우리가 배워야 할 것은 또 다른 인용 형식인 약인용이다.

약인용


약한 인용은 프로그래머가 대상에 대한 인용을 보류할 수 있으며, 이 대상은 대상이 소각되는 것을 막지 못한다.그것들은 유사한 캐시를 실현하는 구조에 매우 유용하다.
이것은 비교적 공식적인 해석이다.이 설명에서 알 수 있듯이 약인용도 일종의 인용 형식이다. 그러나 만약에 우리가 원래의 대상을 소각한다면 약인용 대상도 소각될 것이다. 마치 일반적인 값 대상의 값과 같다.만약 이전의 글을 보지 못했거나 PHP의 인용에 익숙하지 않은 친구는 PHP의 인용에 관한 지식을 좀 더 알아야 할 수도 있다.다음은 우리가 직접 예시를 통해 한번 봅시다.

WeakReference


$obj = new stdClass;
$weakref = $obj;

var_dump($weakref);
// object(stdClass)#1 (0) {
// }

unset($obj);
var_dump($weakref);
// object(stdClass)#1 (0) {
// }

$obj1 = new stdClass;
$weakref = WeakReference::create($obj1);

var_dump($weakref->get());
// object(stdClass)#2 (0) {
// }

unset($obj1);
var_dump($weakref->get());
// NULL

$weakref = WeakReference::create(new stdClass);
var_dump($weakref->get());
// NULL
첫 번째 객체\$obj PHP 기본 객체 값인 직접 할당 참조를 수행합니다.이때 $weakref는 대상 기호표의 인용을 저장합니다.우리가 unset () 에서 $obj를 떨어뜨렸을 때, $weakref는 여전히 정상적으로 사용할 수 있습니다.즉, $weakref는 $obj의 원시 대상에 대한 메모리 인용을 여전히 유지하고 있다.우리가 아무리 unset () 원시적인 $obj를 사용하더라도 $obj의 인용 기호표를 차단했을 뿐, 진정한 대상에 영향을 주지 않으며, 쓰레기 수거기는 가장 원시적인 $obj 대상의 내용을 철저하게 회수하지 않습니다.
두 번째 대상은 우리가 사용하는 WeakReference의create () 방법으로 만든 약한 인용입니다. $obj1을 삭제하면 $weakref도 NULL이 됩니다.이것이 바로 약한 인용의 작용이다!
쓰레기 수거기를 정상적으로 회수할 수 있으며, 순환 인용으로 인한 메모리 유출 문제를 피할 수 있으며, 인용을 C의 바늘 조작과 유사하게 표현할 수 있다.
마지막 코드는 WeakReference::create()에서 new를 사용하여 대상을 만드는 것입니다.이런 형식은 안 돼요. 계속 NULL로 돌아갈 거예요.약한 인용은 변수를 통해 만들어지기 때문에 원시 대상의 기호표를 가리키고, 변수와 대상 간의 기호표 연결이야말로 약한 인용이 관심을 가지는 내용이기 때문에 기호표의 상태에 따라 현재의 상태를 판단할 수 있다.만약 원시 대상 변수가 기호표와의 연결을 끊었다면 약한 인용 변수도 동시에 끊었을 것이다. 그러면 쓰레기 수거기는 이 인용 계수가 없는 대상을 정상적으로 정리할 수 있을 것이다.

주의하다


여기서 주의해야 할 것은 위의 테스트 코드는 반드시 PHP7.4 및 상기 버전에서만 유용해야 한다는 것이다. WeakReference 클래스는 PHP7.4에 새로 추가된 내용이다.이전 버전은 WeakRef라는 확장을 설치해야만 약한 인용 능력을 실현할 수 있으며, 구체적인 내용은 아래 링크의 관련 문서를 볼 수 있습니다.

테스트 코드:


https://github.com/zhangyue0503...
이상은 PHP 약인용과 관련된 총결산의 상세한 내용입니다. 더 많은 PHP 약인용에 관한 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기