2012-06-21 9 views
16
class Manage 
{ 

spl_autoload_register(function($class) { 
    include $class . '.class.php'; 
}); 
} 

कहें कि मेरे पास उपरोक्त की तरह कुछ कोड है। मैंने वर्गों को लोड करने के अज्ञात फ़ंक्शन विधि का उपयोग करना चुना, लेकिन इसका उपयोग कैसे किया जाता है? लोड करने के लिए यह निर्धारित करता है कि '$class' कितना सटीक है?spl_autoload_register का उपयोग कैसे करें?

+0

आप कोड गलत है। या तो 'प्रबंधित करें' वर्ग से 'sql_autoload_register' डालें या इसे विधि में रखें। – xdazz

+2

@zerkms ओपी और उनके गलत मुंह के साथ आज क्या है? और वे हमेशा mods पर हमला क्यों कर रहे हैं? –

+1

सबसे पहले आपको यह करना चाहिए कि इसे यहां पोस्ट करने से पहले अपने कोड को सिंटैक्स-त्रुटि-जांचें। – hakre

उत्तर

21

में कहीं भी इस्तेमाल किया गया है, आप वहां कोड नहीं डाल सकते हैं। आपको अपनी कक्षा के बाद एसपीएल रजिस्टर जोड़ना चाहिए। आप Manage वर्ग के भीतर एक समारोह रजिस्टर करना चाहता है तो तुम कर सकते हो:

class Manage { 
    public static function autoload($class) { 
     include $class . '.class.php'; 
    } 
} 

spl_autoload_register(array('Manage', 'autoload')); 

लेकिन, जैसा कि आप प्रदर्शन आप एक गुमनाम समारोह का उपयोग कर सकते हैं। तुम भी एक वर्ग की जरूरत नहीं है, तो आप सिर्फ कर सकते हैं:

spl_autoload_register(function($class) { 
    include $class . '.class.php'; 
}); 

किसी भी तरह से, समारोह आपके द्वारा निर्दिष्ट कार्यों कि autoloading के लिए जिम्मेदार हैं का एक पूल में जोड़ा जाता है। आपका फ़ंक्शन इस सूची में जोड़ा गया है (इसलिए यदि पहले से ही सूची में कोई था, तो आपका अंतिम होगा)। इसके साथ, जब आप ऐसा कुछ करते हैं:

UnloadedClass::someFunc('stuff'); 

PHP को एहसास होगा कि UnloadedClass अभी तक घोषित नहीं किया गया है। फिर यह एसपीएल ऑटोलोड लोड फंक्शन सूची के माध्यम से फिर से शुरू हो जाएगा। यह प्रत्येक कार्य को एक तर्क के साथ कॉल करेगा: 'UnloadedClass'। फिर प्रत्येक फ़ंक्शन को कॉल करने के बाद, यह जांचता है कि कक्षा अभी तक मौजूद है या नहीं। यदि यह तब तक जारी नहीं रहता जब तक यह सूची के अंत तक नहीं पहुंच जाता। यदि वर्ग कभी लोड नहीं होता है, तो आपको एक घातक त्रुटि मिलेगी जो आपको बताती है कि कक्षा मौजूद नहीं है।

12

यह निर्धारित करता है कि कौन सा '$ वर्ग' लोड करना है?

$class स्वचालित रूप से PHP द्वारा पारित किया जाता है। और यह अभी तक घोषित नहीं किया गया वर्ग का नाम है, लेकिन रनटाइम

+0

अच्छा। धन्यवाद दोस्त। मैं यही जानना चाहता था। – Viraths

संबंधित मुद्दे