ভূমিকা
PHP-তে ম্যাজিক মেথড হলো কিছু বিশেষ মেথড যা নির্দিষ্ট কাজ সম্পাদনের জন্য তৈরি। এই মেথডগুলো ডাবল আন্ডারস্কোর (__) প্রিফিক্স দিয়ে নামকৃত। এই সকল ফাংশন নাম সংরক্ষিত এবং সংশ্লিষ্ট ম্যাজিক ফাংশনালিটির বাইরে অন্য কোনো উদ্দেশ্যে ব্যবহার করা যায় না। একটি ক্লাসে ম্যাজিক মেথড অবশ্যই পাবলিক ঘোষণা করতে হয়। এই মেথডগুলো ইন্টারসেপ্টার হিসেবে কাজ করে এবং নির্দিষ্ট শর্ত পূরণ হলে স্বয়ংক্রিয়ভাবে কল করা হয়।
PHP-তে বর্তমানে নিম্নলিখিত ম্যাজিক মেথডগুলো উপলব্ধ:
__sleep
public __sleep ( void ) : array
ক্লাসের serialize() মেথড চেক করে এতে __sleep() নামে ফাংশন আছে কিনা। থাকলে, সিরিয়ালাইজেশনের আগে সেই ফাংশনটি এক্সিকিউট হয়। এটি একটি অ্যারে রিটার্ন করতে হবে যাতে সেই অবজেক্টের সকল ভেরিয়েবলের নাম থাকে যা সিরিয়ালাইজ করা উচিত।
__wakeup
public __wakeup ( void ) : void
unserialize() মেথড চেক করে __wakeup() নামে ম্যাজিক ফাংশন আছে কিনা। থাকলে, এই ফাংশনটি অবজেক্টের যেকোনো রিসোর্স পুনরায় নির্মাণ করতে পারে।
__serialize
public __serialize ( void ) : array
serialize() মেথড ক্লাসে __serialize() মেথড আছে কিনা চেক করে। থাকলে, সিরিয়ালাইজেশনের আগে এটি এক্সিকিউট হয়। এটি অবশ্যই একটি অ্যাসোসिएটিভ অ্যারে কনস্ট্রাক্ট করে রিটার্ন করতে হবে যা অবজেক্টের সিরিয়ালাইজড ফর্মের কি/ভ্যালু পেয়ার উপস্থাপন করে।
__unserialize
public __unserialize ( array $data ) : void
unserialize() __unserialize() আছে কিনা চেক করে, এবং এটি __serialize() থেকে রিটার্ন করা রিস্টোর করা অ্যারে পাস করা হবে। এটি সেটি থেকে অবজেক্টের প্রপার্টিগুলো যথাযথভাবে রিস্টোর করতে পারে।
__toString
public __toString ( void ) : string
__toString() মেথড অবজেক্টের স্ট্রিং রিপ্রেজেন্টেশন বর্ণনা করে। উদাহরণস্বরূপ, echo $obj; কী প্রিন্ট করবে। এই মেথড অবশ্যই একটি স্ট্রিং রিটার্ন করতে হবে।
__invoke
__invoke ([ $... ] ) : mixed
এই মেথডটি কল করা হয় যখন একটি স্ক্রিপ্ট একটি অবজেক্টকে ফাংশন হিসেবে কল করার চেষ্টা করে।
__set_state
static __set_state ( array $properties ) : object
এই স্ট্যাটিক মেথডটি var_export() দ্বারা এক্সপোর্ট করা ক্লাসের জন্য কল করা হয়। এটি একটি প্যারামিটার গ্রহণ করে যা এক্সপোর্ট করা প্রপার্টিগুলো অ্যারে আকারে থাকে (array('property' => value, ...)।
__debugInfo
__debugInfo ( void ) : array
এই মেথডটি স্বয়ংক্রিয়ভাবে কল হয় যখন var_dump() এক্সিকিউট হয় একটি অবজেক্ট ডাম্প করার জন্য, যাতে দেখানো যায় কোন প্রপার্টিগুলো দেখানো উচিত। যদি এটি ডিফাইন না থাকে, তবে সকল পাবলিক, প্রোটেক্টেড এবং প্রাইভেট প্রপার্টি দেখানো হবে।
__set
public __set ( string $name , mixed $value ) : void
__set() রান হয় যখন অ্যাক্সেস করা যাচ্ছে না এমন (প্রোটেক্টেড বা প্রাইভেট) বা অস্তিত্বহীন প্রপার্টিতে ডেটা লেখা হয়।
__get
public __get ( string $name ) : mixed
__get() অ্যাক্সেস করা যাচ্ছে না এমন (প্রোটেক্টেড বা প্রাইভেট) বা অস্তিত্বহীন প্রপার্টি থেকে ডেটা পড়তে ব্যবহৃত হয়।
__isset
public __isset ( string $name ) : bool
__isset() ট্রিগার হয় যখন isset() বা empty() কল করা হয় অ্যাক্সেস করা যাচ্ছে না এমন (প্রোটেক্টেড বা প্রাইভেট) বা অস্তিত্বহীন প্রপার্টিতে।
__unset
public __unset ( string $name ) : void
__unset() আহ্বান করা হয় যখন unset() ব্যবহার করা হয় অ্যাক্সেস করা যাচ্ছে না এমন (প্রোটেক্টেড বা প্রাইভেট) বা অস্তিত্বহীন প্রপার্টিতে।