Magento 2 में क्या (प्रकार) कक्षाएं उत्पन्न होती हैं?


9

Magento 2 में उन कक्षाओं का एक समूह होता है जो स्वचालित रूप से उत्पन्न var/generationहोते हैं और उनमें संग्रहीत होते हैं और उनका उपयोग कोर कोड में किया जाता है।
मुख्य मॉड्यूल में से एक की नकल करके एक कस्टम मॉड्यूल बनाने की कोशिश करते हुए मैंने देखा कि मेरे मॉड्यूल के लिए भी कुछ उत्पन्न कक्षाएं हैं।
उत्पन्न कक्षाओं में मैंने प्रॉक्सिस, इंटरसेप्टर, कारखाने देखे हैं ...।

क्या ऑटो उत्पन्न होने वाले वर्गों या प्रकारों की एक पूरी सूची है?
और जैसा कि पक्ष का सवाल है ... वे कब / कहां उत्पन्न होते हैं?

जवाबों:


9

अलग-अलग संस्थाएं उत्पन्न करने के अलग-अलग कारण हैं:

प्रॉक्सी - इसका उपयोग आलसी-लोडिंग के लिए किया जाता है। लेकिन प्रत्येक प्रकार के लिए अलग-अलग प्रॉक्सी वर्ग की आवश्यकता होती है ताकि डेवलपर्स के लिए उन्हें मैन्युअल रूप से लिखना कष्टप्रद हो जाए इसलिए मैगेंटो उन्हें उत्पन्न करता है। यो केवल di.xml में प्रॉक्सी के संदर्भ पाएंगे

फैक्ट्री - एक ऐसा वर्ग है जिसका उपयोग गैर-इंजेक्शन (निकाय) बनाने के लिए किया जाता है। प्रॉक्सी के रूप में भी। PHP में अभी तक जेनेरिक नहीं है, इसलिए हम डेवलपर-बायलरप्लेट कोड बनाने के लिए ऑटो-जेनरेट नहीं करते हैं। आप Magento कोड भर में कारखानों के साथ बातचीत करेंगे। सबसे शायद आपको अपनी संस्थाओं के लिए अपने कारखानों की आवश्यकता होगी। बस निर्माता में संबंधित कारखाने के लिए पूछें और यह अगले रन पर या संकलक चलाने के दौरान उत्पन्न होगा।

इंटरसेप्टर - एक बुनियादी ढांचा वर्ग है, जिसका उपयोग इंटरसेप्शन घटक द्वारा किया जाता है। फ्लाइंगमैन और फिल विंकल ने देखा कि आपको किसी भी तरह उनके साथ बातचीत नहीं करनी चाहिए।

अन्य इकाइयाँ उत्पन्न होती हैं (जैसे ऑब्जेक्ट ग्राफ़ प्रोफाइलिंग के लिए लकड़हारा) लेकिन ये 3 सबसे महत्वपूर्ण हैं।

Magento 2 भी संकलित किया जा सकता है। संकलन डीआई और अवरोधन को तेज बनाता है। सभी कोड जनरेशन और कंपटीशन देव / टूल्स / मैगनेटो / टूल्स / डीआई / कंपाइलर.php के साथ किया जा सकता है


2

अवधारणा से:

आपको यह जानने की आवश्यकता नहीं है कि किस प्रकार की कक्षाएं स्वतः उत्पन्न होती हैं, क्योंकि आपको कभी भी उन्हें छूना या उनका उपयोग नहीं करना चाहिए, यहां तक ​​कि आपको भी नहीं।

वे मक्खी पर (अभी भी?) उत्पन्न होते हैं, लेकिन बाद में उन्हें क्ली कमांड या इसी तरह उत्पन्न होना चाहिए।

जो सूची मौजूद है वह किसी भी समय बढ़ सकती है, जब आंतरिक भागों को नए की आवश्यकता होती है। लेकिन उन तक पहुंच हमेशा सामान्य दस्तावेज एपीआई (आमतौर पर फ़ंक्शन कॉल के रूप में जाना जाता है) के पीछे छिपी होगी।


1
मैं "या उनके उपयोग" के बारे में निश्चित नहीं हूं। यहाँ एक उदाहरण है: Magento\Cms\Block\Blockकंस्ट्रक्टर में एक उदाहरण का \Magento\Cms\Model\BlockFactoryउपयोग किया जाता है। वह वर्ग कोड में कहीं नहीं है। यह केवल में पाया जाता है var/generation। इसलिए यदि मैं एक समान मॉड्यूल कर रहा हूं तो मुझे एक समान वर्ग का उपयोग करना पड़ सकता है।
मेरियस

2

यह है कि कैसे Magento नए मंच के लिए पहलू उन्मुख दृष्टिकोण उत्पन्न करता है; वास्तव में गतिशील रूप से उन्हें भेजने के बजाय "घटनाओं" से पहले, आस-पास और बाद में उत्पन्न करके। यह प्रोग्रामर को सुविधा का संतुलन और मंच के लिए प्रदर्शन को प्रभावित करता है।

ऑटो निर्भरता इंजेक्शन जैसी कुछ तकनीकों को प्रतिबिंब के माध्यम से निष्पादित करने के बजाय उत्पन्न वर्गों में समतल किया जाता है - यह प्रदर्शन में सुधार करने की तकनीक है।


"क्यों?" समझाने के लिए धन्यवाद, लेकिन मेरे मुख्य प्रश्न थे "क्या?" और कहाँ?"।
मेरियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.