PHP-তে OOP-তে যাদুর মাধ্যমে বৈশিষ্ট্য পাওয়া

পরবর্তী যাদু পদ্ধতি যা আমরা আলোচনা করব, তার নাম __get। এই পদ্ধতিটি একটি প্রাইভেট বা সুরক্ষিত বৈশিষ্ট্যের মান পড়ার চেষ্টা করলে সক্রিয় হয়।

যদি কোনও ক্লাসে __get পদ্ধতি প্রয়োগ করা হয়, তবে সকল অস্তিত্বহীন বা লুকানো বৈশিষ্ট্যে অ্যাক্সেস এই পদ্ধতি দ্বারা পরিচালিত হবে।

এক্ষেত্রে PHP স্বয়ংক্রিয়ভাবে অনুরোধকৃত বৈশিষ্ট্যের নাম এই পদ্ধতির প্রথম প্যারামিটারে প্রেরণ করবে, এবং এই পদ্ধতি দ্বারা ফেরত পাঠানো মানটি সেই বৈশিষ্ট্যের মান হিসাবে বিবেচিত হবে, যেটিতে অ্যাক্সেস করা হয়েছে।

সম্ভবত এখনও খুব স্পষ্ট বোঝা যাচ্ছে না কিভাবে এটি কাজ করে, তাই আসুন একটি ব্যবহারিক উদাহরণ দেখি। ধরি আমাদের কাছে Test নামে একটি ক্লাস আছে একটি প্রাইভেট এবং একটি পাবলিক বৈশিষ্ট্য সহ:

Test.php<?php
  class Test
  {
    public  $prop1 = 1; // পাবলিক বৈশিষ্ট্য
    private $prop2 = 2; // প্রাইভেট বৈশিষ্ট্য
  }
?>

আসুন আমাদের ক্লাসে __get যাদু পদ্ধতি যোগ করি, যা শুরুতে শুধুমাত্র অ্যাক্সেস করা বৈশিষ্ট্যের নাম ফেরত দিবে:

Test.php<?php
  class Test
  {
    public  $prop1 = 1;
    private $prop2 = 2;
    
    public function __get($property)
    {
      return $property; // শুধু বৈশিষ্ট্যের নাম ফেরত দিন
    }
  }
?>

আসুন তৈরি করা যাদু পদ্ধতির কাজ পরীক্ষা করি। তিন ধরনের বৈশিষ্ট্যে অ্যাক্সেস করি: একটি পাবলিক বৈশিষ্ট্য, একটি প্রাইভেট এবং একটি অস্তিত্বহীন বৈশিষ্ট্য:

index.php<?php
  $test = new Test;
  
  // পাবলিক বৈশিষ্ট্যে অ্যাক্সেস:
  echo $test->prop1; // 1 দেখাবে - অর্থাৎ বৈশিষ্ট্যের মান
  
  // প্রাইভেট বৈশিষ্ট্যে অ্যাক্সেস:
  echo $test->prop2; // 'prop2' দেখাবে - বৈশিষ্ট্যের নাম
  
  // অস্তিত্বহীন বৈশিষ্ট্যে অ্যাক্সেস:
  echo $test->prop3; // 'prop3' দেখাবে - বৈশিষ্ট্যের নাম
?>

আপনি দেখতে পাচ্ছেন, আমাদের যাদু পদ্ধতিটি প্রাইভেট এবং অস্তিত্বহীন বৈশিষ্ট্যে অ্যাক্সেসে সাড়া দেয়, কিন্তু পাবলিক বৈশিষ্ট্যে অ্যাক্সেসকে উপেক্ষা করে - সেগুলো আগের মতোই কাজ করে।