में कहीं भी इस्तेमाल किया गया है, आप वहां कोड नहीं डाल सकते हैं। आपको अपनी कक्षा के बाद एसपीएल रजिस्टर जोड़ना चाहिए। आप 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'
। फिर प्रत्येक फ़ंक्शन को कॉल करने के बाद, यह जांचता है कि कक्षा अभी तक मौजूद है या नहीं। यदि यह तब तक जारी नहीं रहता जब तक यह सूची के अंत तक नहीं पहुंच जाता। यदि वर्ग कभी लोड नहीं होता है, तो आपको एक घातक त्रुटि मिलेगी जो आपको बताती है कि कक्षा मौजूद नहीं है।
स्रोत
2012-06-21 03:51:37
आप कोड गलत है। या तो 'प्रबंधित करें' वर्ग से 'sql_autoload_register' डालें या इसे विधि में रखें। – xdazz
@zerkms ओपी और उनके गलत मुंह के साथ आज क्या है? और वे हमेशा mods पर हमला क्यों कर रहे हैं? –
सबसे पहले आपको यह करना चाहिए कि इसे यहां पोस्ट करने से पहले अपने कोड को सिंटैक्स-त्रुटि-जांचें। – hakre