Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP WeakReference class


แนะนำตัว

ด้วยการอ้างอิงที่อ่อนแอ เป็นไปได้ที่จะคงการอ้างอิงไปยังวัตถุซึ่งไม่ได้ป้องกันวัตถุจากการถูกทำลาย การใช้แคชเช่นโครงสร้างสามารถทำได้โดยการอ้างอิงที่อ่อนแอ

การอ้างอิงที่อ่อนแอจะคล้ายกับการอ้างอิงปกติ ยกเว้นว่าไม่ได้ป้องกันตัวรวบรวมขยะจากการรวบรวมอ็อบเจ็กต์ หากไม่พบการอ้างอิงที่ชัดเจนถึงวัตถุนั้น จะถูกลบออกจากหน่วยความจำทันที วิธีนี้ทำให้สามารถใช้ประโยชน์ส่วนใหญ่ของแคชได้ โดยไม่มีปัญหาเรื่องหน่วยความจำ

จุดอ่อน คลาสได้รับการแนะนำใน PHP 7.4 ก่อนหน้าเวอร์ชันนี้ weakref . เคยได้รับเอฟเฟกต์แบบเดียวกัน การขยาย. คลาส WeakReference มีโครงสร้างดังนี้

ไวยากรณ์

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

วิธีการ

จุดอ่อนสาธารณะ::__สร้าง ( เป็นโมฆะ ) — ไม่อนุญาตให้สร้างอินสแตนซ์ของคลาส WeakReference สามารถสร้างอินสแตนซ์ได้ด้วยวิธีการจากโรงงาน WeakReference::create()

แบบคงที่สาธารณะ WeakReference::create ( วัตถุ $referent ) :WeakReference — สร้างจุดอ่อนใหม่

จุดอ่อนสาธารณะ::get ( เป็นโมฆะ ) :?object — รับวัตถุอ้างอิงที่อ่อนแอ หากวัตถุถูกทำลายไปแล้ว ค่า NULL จะถูกส่งคืน

ตัวอย่างเครื่องกำเนิดไฟฟ้า

ตัวอย่างต่อไปนี้มีวัตถุของ myclass จุดอ่อน ไปยังวัตถุของมันแสดงหนึ่งการอ้างอิง อ็อบเจ็กต์จะถูกยกเลิกการตั้งค่า ตอนนี้ 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