ভূমিকা
অন্য একটি PHP স্ক্রিপ্টে ডিফাইন করা ক্লাস ব্যবহার করতে, আমরা include বা require স্টেটমেন্ট দিয়ে সেটি অন্তর্ভুক্ত করতে পারি। কিন্তু, PHP-এর অটোলোডিং বৈশিষ্ট্যে এমন eksplisitt ইনক্লужনের প্রয়োজন নেই। বরং, যখন একটি ক্লাস ব্যবহার করা হয় (তার অবজেক্ট ডিক্লেয়ার করার মতো), PHP পার্সার সেটি স্বয়ংক্রিয়ভাবে লোড করে, যদি সেটি spl_autoload_register() ফাংশন দিয়ে রেজিস্টার করা থাকে। যেকোনো সংখ্যক ক্লাস এইভাবে রেজিস্টার করা যায়। এইভাবে PHP পার্সার ক্লাস/ইন্টারফেস লোড করার জন্য শেষ চান্স পায় এরর ইমিট করার আগে।
সিনট্যাক্স
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});
ক্লাসটি তার সংশ্লিষ্ট .php ফাইল থেকে লোড হবে যখন এটি প্রথমবার ব্যবহার করা হবে।
অটোলোডিং উদাহরণ
এই উদাহরণটি দেখায় কিভাবে একটি ক্লাস অটোলোডিং-এর জন্য রেজিস্টার করা হয়:
উদাহরণ
<?php
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});
$obj = new test1();
$obj2 = new test2();
echo "objects of test1 and test2 class created successfully";
?>
আউটপুট
এটি নিচের ফলাফল তৈরি করবে:
objects of test1 and test2 class created successfully
তবে, যদি সংশ্লিষ্ট .php ফাইল যেখানে ক্লাসের ডেফিনিশন আছে তা না পাওয়া যায়, তাহলে নিচের এরর দেখানো হবে:
Warning: include(): Failed opening 'test10.php' for inclusion (include_path='C:\xampp\php\PEAR') in line 4 PHP Fatal error: Uncaught Error: Class 'test10' not found
এক্সেপশন হ্যান্ডলিংসহ অটোলোডিং
উদাহরণ
<?php
spl_autoload_register(function($className) {
$file = $className . '.php';
if (file_exists($file)) {
echo "$file included\n";
include $file;
} else {
throw new Exception("Unable to load $className.");
}
});
try {
$obj1 = new test1();
$obj2 = new test10();
} catch (Exception $e) {
echo $e->getMessage(), "\n";
}
?>
আউটপুট
এটি নিচের ফলাফল তৈরি করবে:
Unable to load test1.