কম্পিউটার টিউটোরিয়াল

PHP WeakReference ক্লাস


ভূমিকা

বিক রেফারেন্স দিয়ে একটি অবজেক্টের রেফারেন্স ধরে রাখা যায় যেটি সেই অবজেক্টকে ডিস্ট্রয় হতে বাধা দেয় না। ক্যাশের মতো স্ট্রাকচার ইমপ্লিমেন্ট করা যায় উইক রেফারেন্স দিয়ে।

একটি উইক রেফারেন্স নরমাল রেফারেন্সের মতো, সिवায় এটি গার্বেজ কালেক্টরকে অবজেক্টটি কালেক্ট করতে বাধা দেয় না। যদি সেই অবজেক্টের স্ট্রং রেফারেন্স না পাওয়া যায়, তা অবিলম্বে মেমরি থেকে মুছে যাবে। এইভাবে ক্যাশের অধিকাংশ সুবিধা পাওয়া যায় মেমরি সমস্যা ছাড়া।

WeakReference ক্লাস PHP 7.4-এ ইন্ট্রোডিউস করা হয়েছে। এর আগে একই ইফেক্ট পাওয়া যেতো weakref এক্সটেনশন দিয়ে। WeakReference ক্লাসের স্ট্রাকচার নিচের মতো—

সিনট্যাক্স

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

মেথড

public WeakReference::__construct ( void ) — WeakReference ক্লাস ইনস্ট্যানশিয়েট করা ডিজ্যালো করে। এটি ফ্যাক্টরি মেথড WeakReference::create() দিয়ে ইনস্ট্যানশিয়েট করা যায়।

public static WeakReference::create ( object $referent ) : WeakReference — একটি নতুন WeakReference তৈরি করে।

public WeakReference::get ( void ) : ?object — একটি উইক রেফারেন্সড অবজেক্ট পাওয়া যায়। যদি অবজেক্টটি ইতিমধ্যে ডিস্ট্রয়ড হয়ে যায়, NULL রিটার্ন করে।

জেনারেটর উদাহরণ

নিচের উদাহরণে myclass-এর একটি অবজেক্ট আছে। তার অবজেক্টের WeakReference এক রেফারেন্স দেখাচ্ছে। অবজেক্টটি তারপর আনসেট করা হয়। এখন 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

  1. C#-এ ListDictionary ক্লাস

  2. C#-তে OrderedDictionary ক্লাসের সম্পূর্ণ পরিচয়

  3. C#-এ Object ক্লাস: বেস ক্লাস এবং এর মেথডসমূহ

  4. C#-এ Stack ক্লাস