পরিচয়
দুর্বল রেফারেন্স দিয়ে, এমন একটি বস্তুর রেফারেন্স ধরে রাখা সম্ভব যা বস্তুটিকে ধ্বংস হতে বাধা দেয় না। কাঠামোর মতো ক্যাশে বাস্তবায়ন দুর্বল রেফারেন্স দ্বারা করা যেতে পারে।
একটি দুর্বল রেফারেন্স একটি সাধারণ রেফারেন্সের অনুরূপ, ব্যতীত এটি আবর্জনা সংগ্রহকারীকে বস্তুটি সংগ্রহ করতে বাধা দেয় না। যদি সেই বস্তুর শক্তিশালী উল্লেখ পাওয়া না যায়, তাহলে তা অবিলম্বে স্মৃতি থেকে মুছে ফেলা হবে। এইভাবে ক্যাশের বেশিরভাগ সুবিধা বাস্তবায়ন করা সম্ভব, কোনো মেমরি সমস্যা ছাড়াই।
দুর্বল রেফারেন্স PHP 7.4 এ ক্লাস চালু করা হয়েছে। এই সংস্করণের আগে, একই প্রভাব weakref দ্বারা পাওয়া যেত এক্সটেনশন দুর্বল রেফারেন্স ক্লাসে নিম্নলিখিত কাঠামো রয়েছে
সিনট্যাক্স
WeakReference {
/* Methods */
public __construct ( void )
public static create ( object $referent ) : WeakReference
public get ( void ) : ?object
} পদ্ধতি
সর্বজনীন দুর্বল রেফারেন্স::__নির্মাণ ( অকার্যকর ) — উইকরেফারেন্স ক্লাসের ইন্সট্যান্টেশন অনুমোদন না করুন। এটি ফ্যাক্টরি পদ্ধতি WeakReference::create().
দিয়ে ইনস্ট্যান্ট করা যেতে পারেপাবলিক স্ট্যাটিক দুর্বল রেফারেন্স::create ( অবজেক্ট $referent ) :WeakReference — একটি নতুন দুর্বল রেফারেন্স তৈরি করে।
সর্বজনীন দুর্বল রেফারেন্স::গেট ( অকার্যকর ) :?অবজেক্ট - একটি দুর্বলভাবে উল্লেখ করা বস্তু পায়। বস্তুটি ইতিমধ্যেই ধ্বংস হয়ে গেলে, NULL ফেরত দেওয়া হয়।
জেনারেটরের উদাহরণ
নিম্নলিখিত উদাহরণে মাইক্লাসের অবজেক্ট রয়েছে। দুর্বল রেফারেন্স তার বস্তুর একটি রেফারেন্স দেখায়. অবজেক্ট তারপর আনসেট হয়. এখন 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