Voorkomen dat deprecation-waarschuwingen vals alarm slaan
Wanneer PHPStan een methode als deprecated markeert, ga je normaal gesproken op zoek naar een vervanging. Maar wat als er geen is?
Shopware gebruikte de @deprecated-tag om geplande wijzigingen aan te kondigen — zoals het toevoegen van een nieuwe optionele parameter. Statische analyse-tools behandelden die tags als echte deprecations en klaagden over elke aanroep. De ruis nam toe, ontwikkelaars begonnen de waarschuwingen te negeren en de meldingen verloren hun waarde. Dat is het klassieke "vals alarm slaan".
In Shopware 6.7.14.0 hebben we de signalen gesplitst.
@deprecated– reserveer dit voor API's die zullen verdwijnen of worden vervangen. Je moet je code migreren.- BC-change attributes – gebruik deze voor geplande aanpassingen die de API in stand houden, zoals nieuwe optionele parameters of gewijzigde return types.
De nieuwe attributes bevinden zich in Shopware\Core\Framework\Deprecation\BCChange. Ze vertellen je precies wat er gaat veranderen en wie dit raakt.
We hebben ze verdeeld in twee groepen:
- CallSiteCompatibilityChange – heeft invloed op code die een methode aanroept.
- ExtenderCompatibilityChange – heeft invloed op klassen die een methode uitbreiden (extend) of overschrijven (override).
Nu kun je je extensie voorbereiden op Shopware 6.8 voordat de volgende grote release verschijnt.
Voorbeeld: een methode krijgt een nieuwe optionele parameter. Voeg die parameter vandaag nog toe aan je overrides; de code werkt zowel op de huidige als op de toekomstige versies.
De wijziging herstelt het vertrouwen in deprecation-waarschuwingen.
Drie stappen voor ontwikkelaars
- Behandel
@deprecatedals een verplichte fix; de API zal verdwijnen. - Stop met het gebruik van brede ignore-patronen die echte problemen kunnen verbergen.
- Let op BC-change attributes en pas nu kleine, veilige updates toe in plaats van later een massale migratie.
Bron: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983
