Deprecation Warnings को बेवजह की चेतावनी बनने से रोकना
जब PHPStan किसी मेथड को deprecated के रूप में चिह्नित करता है, तो आप आमतौर पर उसके विकल्प की तलाश करते हैं। लेकिन क्या होगा अगर कोई विकल्प मौजूद ही न हो?
Shopware @deprecated टैग का उपयोग नियोजित परिवर्तनों की घोषणा करने के लिए करता था—जैसे कि एक नया वैकल्पिक पैरामीटर जोड़ना। Static-analysis टूल्स ने उन टैग्स को वास्तविक deprecations मान लिया और हर कॉल पर शिकायत करने लगे। चेतावनियों का शोर बढ़ता गया, डेवलपर्स ने उन्हें नज़रअंदाज़ करना शुरू कर दिया, और अलर्ट अपना महत्व खो बैठे। यह वही क्लासिक "crying wolf" (झूठी चेतावनी) वाली स्थिति है।
Shopware 6.7.14.0 में हमने इन संकेतों (signals) को अलग कर दिया है।
@deprecated– इसे उन APIs के लिए सुरक्षित रखें जो गायब हो जाएंगी या जिन्हें बदल दिया जाएगा। आपको अपना कोड माइग्रेट करना ही होगा।- BC-change attributes – इनका उपयोग उन नियोजित बदलावों के लिए करें जो API को सक्रिय रखते हैं, जैसे कि नए वैकल्पिक पैरामीटर या बदले हुए return types।
नए attributes Shopware\Core\Framework\Deprecation\BCChange में मौजूद हैं। वे आपको सटीक रूप से बताते हैं कि क्या बदलेगा और इसका प्रभाव किन पर पड़ेगा।
हमने उन्हें दो समूहों में विभाजित किया है:
- CallSiteCompatibilityChange – यह उस कोड को प्रभावित करता है जो किसी मेथड को कॉल करता है।
- ExtenderCompatibilityChange – यह उन क्लासेस को प्रभावित करता है जो किसी मेथड को extend या override करती हैं।
अब आप अगली बड़ी रिलीज़ आने से पहले ही अपने extension को Shopware 6.8 के लिए तैयार कर सकते हैं।
उदाहरण: एक मेथड में एक नया वैकल्पिक पैरामीटर जोड़ा जाएगा। आज ही उस पैरामीटर को अपने overrides में जोड़ दें; इससे कोड वर्तमान और भविष्य दोनों वर्ज़न पर चलेगा।
यह बदलाव deprecation warnings पर भरोसे को फिर से बहाल करता है।
डेवलपर्स के लिए तीन कदम
@deprecatedको एक अनिवार्य सुधार (mandatory fix) के रूप में मानें; वह API गायब हो जाएगी।- उन व्यापक ignore patterns को हटा दें जो वास्तविक समस्याओं को छिपा सकते हैं।
- BC-change attributes पर नज़र रखें और बाद में बड़े पैमाने पर माइग्रेशन करने के बजाय अभी छोटे, सुरक्षित अपडेट लागू करें।
स्रोत: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983
