PHP-তে OOP-এ ক্লাস অটোলোডিং
আপনি ইতিমধ্যেই জানেন যে একটি ক্লাস ব্যবহার করতে চাইলে আমাদের অবশ্যই
এটি require এর মাধ্যমে সংযুক্ত করতে হবে।
যখন একটি প্রকল্পে প্রচুর সংখ্যক ক্লাস থাকে, তখন অনেকগুলি সংযোগ পাওয়া যায়,
যেগুলি লেখা খুবই অসুবিধাজনক এবং নিয়ন্ত্রণ করা কঠিন।
এই ধরনের সমস্যা সমাধানের জন্য PHP-তে ক্লাসের অটোলোডিং যোগ করা হয়েছে। অটোলোডিং PHP-কে কোডে একটি ক্লাস অ্যাক্সেস করার চেষ্টা করার সময় স্বয়ংক্রিয়ভাবে সেই ক্লাসের ফাইল লোড করতে দেয়। তবে, শুধু এমনি ক্লাসগুলি লোড হবে না - সেগুলিকে অবশ্যই একটি নির্দিষ্ট উপায়ে সাইটের ফোল্ডারগুলিতে স্থাপন করতে হবে, যেকোনো ক্লাস ফাইল এবং ফোল্ডারের নামকরণ কনভেনশন অনুসরণ করে। PHP-তে অন্তর্নির্মিত কনভেনশন ব্যবহার করা যেতে পারে, অথবা নিজের একটি তৈরি করে সেটি ব্যবহার করা যেতে পারে।
প্রথমে PHP-এর স্ট্যান্ডার্ড কনভেনশনটি বুঝে নেওয়া যাক। এই কনভেনশনটি হল যে যদি আমাদের একটি ক্লাস সহ একটি ফাইল থাকে, তবে সাইটের ফোল্ডারগুলিতে সেই ফাইলের পথটি ফাইলের namespace-এর সাথে মিলতে হবে, এবং ফাইলের নাম তাতে থাকা ক্লাসের নামের সাথে মিলতে হবে। এক্ষেত্রে ফোল্ডার এবং ফাইলের নাম ছোট হাতের অক্ষরে হতে হবে।
একটি উদাহরণ দেখি। ধরুন আমাদের কাছে নিম্নলিখিত ক্লাসটি আছে:
<?php
namespace Core\Admin;
class PageController
{
}
?>
কনভেনশন অনুসারে, এই ক্লাসটি অবশ্যই অবস্থান করতে হবে
/core/admin/ ফোল্ডারে pagecontroller.php ফাইলে।
এখন index.php ফাইলে আমাদের ক্লাসটি ব্যবহার করি,
require এর মাধ্যমে সংযুক্ত না করে,
বরং অটোলোডিং ব্যবহার করে। এটি করার জন্য, শুরুতে
যে ফাইলে ক্লাসগুলি কল করা হয়, সেখানে
spl_autoload_register ফাংশনটি কল করতে হবে।
এটি করা যাক:
<?php
spl_autoload_register(); // অটোলোডিং সক্রিয় করি
$obj = new Core\Admin\PageController; // নির্বিঘ্নে অবজেক্ট তৈরি করি
?>
index.php ফাইলে ক্লাসের স্বয়ংক্রিয়
লোডিং সক্রিয় করুন। ফোল্ডার এবং ফাইলের নামকরণ কনভেনশন
অনুসরণ করে Core\User ক্লাস,
Core\Admin\Controller ক্লাস এবং
Project\User\Data ক্লাস তৈরি করুন।
index.php ফাইলে
এই ক্লাসগুলির অবজেক্ট তৈরি করুন।