দুর্বল মানচিত্র পিএইচপি 7.4 এ যোগ করা হয়েছে। এটি অবজেক্ট অপসারণ বা মুছে ফেলার জন্য ব্যবহার করা যেতে পারে যখন ক্যাশে বস্তুর সত্তা ক্লাসগুলিকে বোঝায়। এটি সেই বস্তুগুলির উল্লেখ করে, যা সংগ্রহ করা মেমরি আবর্জনা থেকে বস্তুগুলিকে এড়ায় না। PHP 8-এ, দুর্বল মানচিত্র আমাদেরকে কোনো মেমরি ফাঁস না করেই বস্তুর সাথে লিঙ্ক করা এলোমেলো ডেটা সংরক্ষণ করতে দেয়।
অন্য কথায়, PHP 8-এ একটি দুর্বল মানচিত্র হল বস্তুর একটি গ্রুপ যেখানে কীগুলি দুর্বলভাবে উল্লেখ করে . একটি দুর্বল মানচিত্র এমন একটি বস্তু তৈরি করতে একটি ক্লাস ব্যবহার করে যা একটি কী হিসাবে ব্যবহার করা যেতে পারে, যা দুর্বল মানচিত্রটিকে অপসারণ করতে এবং ধ্বংস করতে সাহায্য করতে পারে যদি আর কোন রেফারেন্স না থাকে। দীর্ঘমেয়াদী প্রক্রিয়ায়, এটি মেমরি লিক এড়াতে পারে, যা শেষ পর্যন্ত কর্মক্ষমতা উন্নত করে।
আমরা বলতে পারি একটি দুর্বল মানচিত্র একটি স্বয়ংক্রিয় আবর্জনা সংগ্রহ প্রক্রিয়া হিসাবে কাজ করে। যখনই একটি ভেরিয়েবল মুছে ফেলা হয়, পিএইচপি পরীক্ষা করবে যে কোনো ভেরিয়েবল এখনও সেই বস্তুটিকে উল্লেখ করছে কিনা। যদি ভেরিয়েবলটি রেফারেন্স না করে, তাহলে পিএইচপি সেই বস্তুটিকে নিরাপদে মুছে দেবে। এই প্রক্রিয়াটিকে আবর্জনা সংগ্রহ বলা হয় .
উদাহরণ:দুর্বল মানচিত্র 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