कमजोर मानचित्र PHP 7.4 में जोड़े गए थे। इसका उपयोग वस्तुओं को हटाने या हटाने के लिए किया जा सकता है जब कैश ऑब्जेक्ट इकाई वर्गों को संदर्भित करता है। यह उन वस्तुओं का संदर्भ देता है, जो एकत्रित स्मृति कचरे से वस्तुओं से नहीं बचते हैं। PHP 8 में, कमजोर नक्शे हमें किसी भी मेमोरी को लीक किए बिना, वस्तुओं से जुड़े यादृच्छिक डेटा को स्टोर करने की अनुमति देते हैं।
दूसरे शब्दों में, PHP 8 में एक कमजोर नक्शा वस्तुओं का एक समूह है जिसमें कुंजी कमजोर रूप से संदर्भित होती है . एक कमजोर नक्शा एक वस्तु बनाने के लिए एक वर्ग का उपयोग करता है जिसे एक कुंजी के रूप में इस्तेमाल किया जा सकता है, जो आगे कोई संदर्भ नहीं होने पर कमजोर मानचित्र को हटाने और नष्ट करने में मदद कर सकता है। लंबे समय तक चलने वाली प्रक्रिया में, यह मेमोरी लीक से बच सकता है, जिससे अंततः प्रदर्शन में सुधार होता है।
हम कह सकते हैं कि एक कमजोर नक्शा स्वचालित कचरा संग्रहण प्रक्रिया के रूप में काम करता है। जब भी कोई वेरिएबल हटा दिया जाता है, PHP जाँच करेगा कि क्या कोई वेरिएबल अभी भी उस ऑब्जेक्ट को संदर्भित कर रहा है। यदि वेरिएबल रेफरेंसिंग नहीं कर रहा है, तो PHP उस ऑब्जेक्ट को सुरक्षित रूप से हटा देगा। इस प्रक्रिया को कचरा संग्रह . कहा जाता है ।
उदाहरण:कमजोर मैप्स PHP 8
<?php class WeakExample { public WeakMap $cache; public function __construct() { $this->cache = new WeakMap(); } public function getCaching(object $obj) { return $this->cache[$obj] ??= $this->computeSomethingExpensive($obj); } public function computeSomethingExpensive(object $obj) { print_r("Object called"); return rand(1, 100); } } $cacheObject = new stdClass; $obj = new WeakExample; $obj->getCaching($cacheObject); $obj->getCaching($cacheObject); print_r(count($obj->cache)); unset($cacheObject); // unsetting the objects and Weak Maps frees up memory print_r(count($obj->cache)); ?>
आउटपुट
Object called 1 0