आर्किटेक्चर और request · प्रश्न 9 / 12

एक controller को अपने constructor में GeocoderInterface चाहिए। extension में दो implementations हैं, OpenStreetMapGeocoder और GoogleGeocoder। container error देता है। default implementation कैसे परिभाषित करें?

2 उत्तर सही हैं। मध्यम

उत्तर दिखाएँ

उत्तर

  • A Services.yaml में alias परिभाषित करें: Vendor\MyExt\Geocoder\GeocoderInterface: '@Vendor\MyExt\Geocoder\OpenStreetMapGeocoder'
  • B क्लास OpenStreetMapGeocoder पर attribute #[AsAlias(GeocoderInterface::class)] जोड़ें

व्याख्या

यदि ठीक एक implementation है, तो Symfony classes लोड करते समय उसे अपने-आप interface से जोड़ देता है। दो उम्मीदवारों के साथ container नहीं जानता कि किसका उपयोग करे और रुक जाता है। alias ठीक इसी प्रश्न का उत्तर देता है, या तो सीधे क्लास पर #[AsAlias] (Symfony DependencyInjection) से या Services.yaml में। public: true केवल service को बाहर से प्राप्त करने योग्य बनाता है, और SingletonInterface केवल यह नियंत्रित करता है कि makeInstance किसी instance का पुनः उपयोग करता है या नहीं।

सर्टिफ़िकेशन और परीक्षाएँ

अगली परीक्षा कौन-सी होगी?

आप 19 परीक्षाओं का अभ्यास पहले से कर सकते हैं, 21 पर वोटिंग चल रही है। सभी सर्टिफ़िकेशन आधिकारिक जानकारी के साथ देखें, वोट करें या अपनी परीक्षा सुझाएँ।

सभी सर्टिफ़िकेशन देखें