spl_autoload_register()
আপনাকে একাধিক ফাংশন (বা আপনার নিজস্ব অটোলোড ক্লাসের স্ট্যাটিক পদ্ধতি) নিবন্ধভুক্ত করার অনুমতি দেয় যা পিএইচপি একটি স্ট্যাক / সারিতে রাখবে এবং "নতুন ক্লাস" ঘোষণার পরে ক্রমান্বয়ে কল করবে।
উদাহরণস্বরূপ:
spl_autoload_register('myAutoloader');
function myAutoloader($className)
{
$path = '/path/to/class/';
include $path.$className.'.php';
}
//-------------------------------------
$myClass = new MyClass();
উপরের উদাহরণে, "মাইক্লাস" সেই শ্রেণীর নাম যা আপনি ইনস্ট্যান্ট করার চেষ্টা করছেন, পিএইচপি এই নামটিকে একটি স্ট্রিং হিসাবে পাস করে spl_autoload_register()
, যা আপনাকে পরিবর্তনশীল বাছাই করতে এবং উপযুক্ত শ্রেণি / ফাইলটিকে "অন্তর্ভুক্ত" করতে ব্যবহার করতে দেয় । ফলস্বরূপ আপনার নির্দিষ্টভাবে বিবৃতি অন্তর্ভুক্ত / আবশ্যক বিবরণের মাধ্যমে সেই শ্রেণিকে অন্তর্ভুক্ত করার দরকার নেই ...
উপরের উদাহরণের মতো আপনি যে ক্লাসটি ইনস্ট্যান্ট করতে চান কেবল তা কল করুন এবং যেহেতু আপনি spl_autoload_register()
নিজের একটি ফাংশন (মাধ্যমে ) নিবন্ধ করেছেন যা আপনার সমস্ত শ্রেণি কোথায় রয়েছে তা নির্ধারণ করে, পিএইচপি এই ফাংশনটি ব্যবহার করবে।
ব্যবহারের সুবিধাটি spl_autoload_register()
হ'ল এটির বিপরীতে __autoload()
আপনার তৈরি প্রতিটি ফাইলের একটি অটোলোড ফাংশন প্রয়োগ করার দরকার নেই। spl_autoload_register()
এছাড়াও আপনাকে অটোলয়েডিং গতি বাড়িয়ে তুলতে এবং আরও সহজ করে তুলতে একাধিক অটোল্যাড ফাংশনগুলি নিবন্ধভুক্ত করার অনুমতি দেয়।
উদাহরণ:
spl_autoload_register('MyAutoloader::ClassLoader');
spl_autoload_register('MyAutoloader::LibraryLoader');
spl_autoload_register('MyAutoloader::HelperLoader');
spl_autoload_register('MyAutoloader::DatabaseLoader');
class MyAutoloader
{
public static function ClassLoader($className)
{
//your loading logic here
}
public static function LibraryLoader($className)
{
//your loading logic here
}
Spl_autoload এর সাথে সম্পর্কিত , ম্যানুয়ালটিতে বলা হয়েছে:
এই ফাংশনটির জন্য একটি ডিফল্ট বাস্তবায়ন হিসাবে ব্যবহার করার উদ্দেশ্যে __autoload()
। যদি অন্য কোনও কিছুই নির্দিষ্ট না করা হয় এবং spl_autoload_register()
কোনও পরামিতি ছাড়াই কল করা হয় তবে এই ফাংশনগুলি পরবর্তী কোনও কল করার জন্য ব্যবহৃত হবে __autoload()
।
আরও ব্যবহারিক শর্তে, যদি আপনার সমস্ত ফাইল একক ডিরেক্টরিতে অবস্থিত থাকে এবং আপনার অ্যাপ্লিকেশনটি কেবল .php ফাইলগুলিই ব্যবহার করে না, যেমন কাস্টম কনফিগারেশন ফাইলগুলি। ইন এক্সটেনশন সহ উদাহরণস্বরূপ, তবে আপনি যে কৌশলটি ব্যবহার করতে পারেন তা হ'ল আপনার ডিরেক্টরিতে সমস্ত ডিরেক্টরি যুক্ত করা পিএইচপি'র ফাইলগুলিতে (অন্তর্ভুক্ত set_include_path()
) অন্তর্ভুক্ত থাকে ।
এবং আপনার যেহেতু আপনার কনফিগারেশন ফাইলগুলিরও প্রয়োজন রয়েছে তাই আপনি spl_autoload_extensions()
পিএইচপি যে এক্সটেনশানগুলির সন্ধান করতে চান তার তালিকা তৈরি করতে ব্যবহার করবেন।
উদাহরণ:
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/');
spl_autoload_extensions('.php, .inc');
spl_autoload_register();
যেহেতু spl_autoload __autoload()
ম্যাজিক পদ্ধতির ডিফল্ট বাস্তবায়ন, তাই আপনি যখন নতুন ক্লাস চেষ্টা ও ইনস্ট্যান্ট করবেন তখন পিএইচপি spl_autoload কল করবে।
আশাকরি এটা সাহায্য করবে...