2011-01-04 13 views
7

मैंने अभी "आलसी लोडिंग" डिज़ाइन पैटर्न के बारे में पढ़ा है।आलसी लोडिंग? क्या इससे बचना बेहतर है?

क्या सभी वर्गों को लोड करने के लिए आलसी लोडिंग का उपयोग करना ठीक है और include(..) पूरी तरह भूल गए हैं?
इस दृष्टिकोण के विपक्ष क्या हैं?

उत्तर

6

autoloading पर एक जोड़े को अंक:

  1. आप हमेशा अपने फ़ाइलों के सभी सहित बनाम autoloading का उपयोग करके एक अच्छा प्रदर्शन सुधार देखेंगे हर समय (विशेष रूप से के रूप में फ़ाइलों की संख्या बढ़ता है बड़ा और बड़ा)।

  2. जब autoloading को लागू करने, यह __autoload() से spl_autoload_register() उपयोग करने के लिए बेहतर है।

हालांकि समय की एक बहुत कुछ है, जब लोग PHP में आलसी लोड हो रहा है के बारे में बात करते हैं, वे की तरह निम्नलिखित कुछ के बारे में बात कर रहे हैं:

class Foo { 
    protected $bar = null; 

    public function getBar() { 
     if ($this->bar == null) { 
      $this->bar = ExpensiveOperation(); 
     } 
     return $this->bar; 
    } 
} 

तो फिर तुम केवल एक संपत्ति लोड जब यह वास्तव में इस्तेमाल किया जा करने की जरूरत है , और हर बार जब आप ऑब्जेक्ट को तुरंत चालू नहीं करते हैं, जो संभावित रूप से कुछ अच्छे लाभ प्राप्त कर सकता है।

+5

+1 spl_autoload_register के लिए() –

2

स्पष्ट रूप से उपयोग करने के लिए ठीक है, या __autoload() आपके लिए अपनी कक्षाएं ढूंढें। किसी भी तरह से।

हालांकि, मैं दो रणनीतियों को मिश्रण करने की अनुशंसा नहीं करता। include लाइनें अनावश्यक होंगी।

3

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

+0

निश्चित रूप से यह ** ** एक आलसी लोडर के लाभ है? –

+0

@Will - अन्य प्रमुख लाभ होगा, और सूची में जोड़ने के जब भी आप एक नया वर्ग जोड़ने के लिए, एक माध्यमिक लाभ है होने शामिल की लंबी सूची के लिए कोई ज़रूरत नहीं है; लेकिन स्मृति/प्रदर्शन में सुधार निश्चित रूप से प्राथमिक लाभ है। इसके अलावा include_once की भूमि के ऊपर से बचाता है, जबकि के बारे में चिंता करने की दोहराया नहीं होने शामिल –

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