spl_autoload_register()
आपको कई कार्यों (या अपने स्वयं के ऑटोलॉड वर्ग से स्थिर तरीकों) को पंजीकृत करने की अनुमति देता है, जब PHP एक "नया वर्ग" घोषित होने पर एक स्टैक / कतार में डाल देगा और क्रमिक रूप से कॉल करेगा।
उदाहरण के लिए:
spl_autoload_register('myAutoloader');
function myAutoloader($className)
{
$path = '/path/to/class/';
include $path.$className.'.php';
}
//-------------------------------------
$myClass = new MyClass();
ऊपर दिए गए उदाहरण में, "MyClass" उस क्लास का नाम है जिसे आप इंस्टेंट करने की कोशिश कर रहे हैं, PHP इस नाम को एक स्ट्रिंग के रूप में पास करता है spl_autoload_register()
, जो आपको वेरिएबल को लेने और उपयुक्त क्लास / फाइल को "शामिल" करने के लिए उपयोग करने की अनुमति देता है। । एक परिणाम के रूप में आपको विशेष रूप से उस वर्ग को शामिल करने / कथन की आवश्यकता नहीं है ...
बस उस वर्ग को कॉल करें जिसे आप ऊपर दिए गए उदाहरण की तरह त्वरित करना चाहते हैं, और जब से आपने spl_autoload_register()
अपना स्वयं का एक फ़ंक्शन (थ्रू ) पंजीकृत किया है जो यह पता लगाएगा कि आपकी सभी कक्षा कहाँ स्थित है, PHP उस फ़ंक्शन का उपयोग करेगा।
उपयोग करने 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 फाइलों का उपयोग करता है, बल्कि कॉन्फ़िगरेशन की कॉन्फ़िगरेशन फ़ाइलों के साथ। उदाहरण के लिए एक्सटेंशन, तो आपके द्वारा उपयोग की जाने वाली एक रणनीति में आपकी निर्देशिका को शामिल करना होगा। PHP के पथ (के माध्यम से set_include_path()
) के लिए फ़ाइलें ।
और चूंकि आपको अपनी कॉन्फ़िगरेशन फ़ाइलों की आवश्यकता होती है, इसलिए आप spl_autoload_extensions()
उन एक्सटेंशनों को सूचीबद्ध करने के लिए उपयोग करेंगे जिन्हें आप PHP के लिए देखना चाहते हैं।
उदाहरण:
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/');
spl_autoload_extensions('.php, .inc');
spl_autoload_register();
चूँकि spl_autoload __autoload()
मैजिक विधि का डिफ़ॉल्ट कार्यान्वयन है , इसलिए जब आप प्रयास करते हैं और एक नए वर्ग को तुरंत भेजते हैं, तो PHP spl_autoload को कॉल करेगा।
उम्मीद है की यह मदद करेगा...