2012-08-06 8 views
8

मैं गया है require, require_once, include, & include_once के प्रतिस्थापन के रूप में spl_autoload_register के बारे में कार्यों पढ़ रहा। यद्यपि इसे कार्यान्वित करने के तरीके के बारे में बहुत सी चर्चा है, लेकिन दस्तावेज़ीकरण बहुत विस्तृत नहीं है और इस बात की कोई व्याख्या नहीं है कि यह मूल तरीकों से फायदेमंद कैसे होगा।PHP: spl_autoload_register का क्या फायदा है? का प्रदर्शन भी शामिल है

संदर्भ: http://php.net/manual/en/function.spl-autoload-register.php

मैं सोच रहा हूँ कैसे spl_autoload_register काम करता है?

spl_autoload_register का उपयोग करते समय कोई प्रदर्शन अंतर है?

यह क्रॉस लिंक्ड क्लास में कई आवश्यक बयानों (20 से अधिक) को कैसे संभालता है? (क्या इसका अभी भी डुप्लिकेट की आवश्यकता नहीं होगी?)

+0

कक्षा परिभाषाओं को लोड करते समय आपको हमेशा 'requ_once' होना चाहिए, जो डुप्लिकेशन के जोखिम को हटा देता है - जो होने पर घातक त्रुटि उत्पन्न करेगा। – DaveRandom

+0

@ डेव रैंडम मैं अपने सभी वर्गों में 'requ_once' का उपयोग करता हूं, लेकिन' require_once' कथन और कक्षा उदाहरण स्क्रिप्ट पेज के शीर्ष पर बनाए जाते हैं। 'Spl_autoload_register' के साथ क्या अंतर है? – mlishn

+1

@ डेव यादृच्छिक: मैं असहमत हूं। 'Include_once' और' require_once' निर्देश न केवल कम प्रदर्शनकारी हैं, बल्कि अधिक महत्वपूर्ण बात यह है कि वे मैला संगठन और वास्तुकला को बढ़ावा देते हैं। – FtDRbwLXw6

उत्तर

7

मैंने कभी भी परीक्षण नहीं किया है (न ही इसके बारे में चिंतित) प्रदर्शन, लेकिन मैं हमेशा एक ऑटोलोडर का उपयोग करता हूं, क्योंकि यह आपके जीवन को बहुत आसान बनाता है।

एक कार्यान्वयन के लिए देखें: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

क्या होता है कि जब आप एक वर्ग तक पहुँचने का प्रयास उदा Foo जिसमें से फ़ाइल अभी तक लोड नहीं है। Autoloader लात मारता है और कक्षा से संबंधित फ़ाइल लोड करने का प्रयास करता है।

यह आसानी से आपके प्रोजेक्ट में फ़ाइलों को व्यवस्थित करके "सही ढंग से" किया जा सकता है। मान लें कि आपके पास कक्षा \Project\Http\Client है (या "पुरानी शैली" गैर नामित Project_Http_Client) यह फ़ाइल लोड करने का प्रयास करेगी: Project/Http/Client.php

+0

के शीर्ष पर 'requ_once' कथन' के टन शामिल करने से दूर विचलन करने की आवश्यकता है, यदि स्क्रिप्ट के शीर्ष पर क्लास इंस्टेंस बनाए जाते हैं तो यह कैसे काम करता है? – mlishn

+0

आपकी पहली स्क्रिप्ट में ऑटोलोडर शामिल करने वाली पहली चीज़ों में से एक है। इससे पहले कि आप अन्य वर्गों के उदाहरण बना रहे हों। मैं हमेशा अपनी बूटस्ट्रैप फ़ाइल में ऑटोलोडर शुरू करता हूं। – PeeHaa

+0

सही है लेकिन यह स्क्रिप्ट के शीर्ष पर केवल 'requ_once' के बराबर नहीं है?मैं कक्षा से कक्षा – mlishn

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