কম্পিউটার টিউটোরিয়াল

PHP অটোলোডিং ক্লাস


ভূমিকা

অন্য একটি 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.

  1. PHP-তে ইন্টারফেস (Interface) ব্যাখ্যা

  2. PHP-তে অ্যাবস্ট্রাক্ট ক্লাস (Abstract Class) ব্যাখ্যা

  3. PHP-এ get_class_methods() ফাংশন

  4. PHP-এ class_exists() ফাংশন