인기있는 서버 측 스크립팅 언어로서 PHP는 웹 개발에 널리 사용됩니다. 일일 개발에서 PHP는 기본적으로 전달되는 값을 사용하므로 함수 호출이 변수의 사본을 전달 함을 의미합니다. 그러나 어떤 경우에는 우리가 통과하려는 것은 특히 메모리 최적화 및 객체 수명주기 관리와 관련하여 변수에 대한 참조입니다. PHP 7.4에 도입 된 약점 메커니즘은 이러한 요구 사항을 해결하는 것입니다.
약한 참조는 물체를 참조 할 수 있지만 쓰레기를 수집하는 것을 방지하지 않는 특별한 참조 방법입니다. 이것은 캐시 시스템 또는 이벤트 중심 아키텍처와 같은 특정 시나리오에 매우 유용한 기능입니다.
PHP에서는 약점 클래스를 사용하여 다음과 같이 약한 참조를 만들 수 있습니다.
$object = new stdClass();
$weakRef = WeakReference::create($object);
위의 코드에서 먼저 객체 $ 객체를 인스턴스화 한 다음 약한 참조 $ excerf를 생성합니다 :: create () 메소드.
약한 참조로 객체를 가리키기 위해 get () 메소드를 사용할 수 있습니다.
$objectRef = $weakRef->get();
객체가 파괴되지 않은 경우 get () 원래 객체에 대한 참조를 반환합니다. 물체가 파괴되면 NULL이 반환됩니다.
캐시 시스템을 구축 할 때는 일반적으로 후속 빠른 액세스를 위해 객체를 저장해야합니다. 기존의 참조 방법은 물체가 파괴되는 것을 방지하고 메모리 폐기물을 유발합니다. 약한 참조를 사용하면 쓰레기 수집 메커니즘에 영향을 미치지 않고 일시적으로 객체를 참조하여 메모리를보다 효과적으로 관리 할 수 있습니다.
두 물체가 서로를 참조하면 원형 기준이 형성되어 쓰레기 수집가가 이러한 물체를 방출하지 못하게합니다. 약한 참조는 루프를 분리하는 방법을 제공하여 참조 중 하나가 물체의 파괴를 방해하지 않아 메모리 누출 위험을 효과적으로 줄입니다.
이벤트 중심의 프로그램에는 종종 이벤트와 프로세서 사이의 많은 구속력이 포함됩니다. 이러한 관계가 일반적인 참조로 유지되면 오랫동안 개체가 재활용되지 않습니다. 약한 참조는 장기 메모리 점유를 피하기 위해 이러한 프로세서를 관리하는 데 사용될 수 있습니다.
약한 참조 메커니즘을 도입함으로써 PHP 개발자는 특히 캐싱, 원형 참조 및 이벤트 처리와 같은 복잡한 시나리오에서 물체의 수명주기를보다 유연하게 관리 할 수 있습니다. 약한 참조는 더 나은 메모리 제어 방법을 제공합니다. 이 기능을 마스터하고 잘 활용하면보다 효율적이고 강력한 PHP 응용 프로그램을 작성하는 데 도움이 될 수 있습니다.