Deprecation Warnings ਨੂੰ ਗਲਤ ਚੇਤਾਵਨੀਆਂ ਦੇਣ ਤੋਂ ਰੋਕਣਾ

ਜਦੋਂ PHPStan ਕਿਸੇ method ਨੂੰ deprecated ਵਜੋਂ ਫਲੈਗ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਮ ਤੌਰ 'ਤੇ ਤੁਸੀਂ ਇਸਦੇ ਬਦਲੇ ਕੋਈ ਹੋਰ ਵਿਕਲਪ ਲੱਭਦੇ ਹੋ। ਪਰ ਕੀ ਹੋਵੇਗਾ ਜੇਕਰ ਕੋਈ ਵਿਕਲਪ ਮੌਜੂਦ ਹੀ ਨਾ ਹੋਵੇ?

Shopware ਨੇ ਯੋਜਨਾਬੱਧ ਤਬਦੀਲੀਆਂ ਦੀ ਘੋਸ਼ਣਾ ਕਰਨ ਲਈ @deprecated ਟੈਗ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ—ਜਿਵੇਂ ਕਿ ਇੱਕ ਨਵਾਂ optional parameter ਜੋੜਨਾ। Static-analysis ਟੂਲਜ਼ ਨੇ ਉਹਨਾਂ ਟੈਗਾਂ ਨੂੰ ਅਸਲ deprecations ਵਜੋਂ ਲਿਆ ਅਤੇ ਹਰ ਕਾਲ (call) ਬਾਰੇ ਸ਼ਿਕਾਇਤ ਕਰਨ ਲੱਗੇ। ਸ਼ੋਰ ਵਧਦਾ ਗਿਆ, ਡਿਵੈਲਪਰਾਂ ਨੇ ਚੇਤਾਵਨੀਆਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ, ਅਤੇ ਅਲਰਟ ਆਪਣੀ ਮਹੱਤਤਾ ਗੁਆ ਬੈਠੇ। ਇਹ ਇੱਕ ਕਲਾਸਿਕ “crying wolf” (ਗਲਤ ਚੇਤਾਵਨੀ ਦੇਣ) ਵਾਲੀ ਸਥਿਤੀ ਸੀ।

Shopware 6.7.14.0 ਵਿੱਚ ਅਸੀਂ ਇਹਨਾਂ ਸੰਕੇਤਾਂ (signals) ਨੂੰ ਵੱਖ-ਵੱਖ ਕਰ ਦਿੱਤਾ ਹੈ।

  • @deprecated – ਇਸਨੂੰ ਉਹਨਾਂ APIs ਲਈ ਰਾਖਵਾਂ ਰੱਖੋ ਜੋ ਖਤਮ ਹੋ ਜਾਣਗੇ ਜਾਂ ਬਦਲ ਦਿੱਤੇ ਜਾਣਗੇ। ਤੁਹਾਨੂੰ ਆਪਣੇ ਕੋਡ ਨੂੰ migrate ਕਰਨਾ ਹੀ ਪਵੇਗਾ।
  • BC-change attributes – ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਉਹਨਾਂ ਯੋਜਨਾਬੱਧ ਤਬਦੀਲੀਆਂ ਲਈ ਕਰੋ ਜੋ API ਨੂੰ ਚਾਲੂ ਰੱਖਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਨਵੇਂ optional parameters ਜਾਂ ਬਦਲੇ ਹੋਏ return types।

ਨਵੇਂ attributes Shopware\Core\Framework\Deprecation\BCChange ਵਿੱਚ ਹਨ। ਉਹ ਤੁਹਾਨੂੰ ਸਹੀ ਤਰ੍ਹਾਂ ਦੱਸਦੇ ਹਨ ਕਿ ਕੀ ਬਦਲੇਗਾ ਅਤੇ ਇਸਦਾ ਪ੍ਰਭਾਵ ਕਿਸ 'ਤੇ ਪਵੇਗਾ।

ਅਸੀਂ ਉਹਨਾਂ ਨੂੰ ਦੋ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡਿਆ ਹੈ:

  • CallSiteCompatibilityChange – ਇਹ ਉਸ ਕੋਡ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ ਜੋ ਕਿਸੇ method ਨੂੰ call ਕਰਦਾ ਹੈ।
  • ExtenderCompatibilityChange – ਇਹ ਉਹਨਾਂ classes ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ ਜੋ ਕਿਸੇ method ਨੂੰ extend ਜਾਂ override ਕਰਦੀਆਂ ਹਨ।

ਹੁਣ ਤੁਸੀਂ ਅਗਲੇ ਮੇਜਰ ਰਿਲੀਜ਼ (major release) ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਆਪਣੇ extension ਨੂੰ Shopware 6.8 ਲਈ ਤਿਆਰ ਕਰ ਸਕਦੇ ਹੋ।

ਉਦਾਹਰਨ: ਇੱਕ method ਵਿੱਚ ਇੱਕ ਨਵਾਂ optional parameter ਜੋੜਿਆ ਜਾਵੇਗਾ। ਅੱਜ ਹੀ ਉਸ parameter ਨੂੰ ਆਪਣੇ overrides ਵਿੱਚ ਜੋੜ ਲਓ; ਕੋਡ ਮੌਜੂਦਾ ਅਤੇ ਭਵਿੱਖ ਦੇ ਦੋਵਾਂ ਵਰਜ਼ਨਾਂ 'ਤੇ ਚੱਲੇਗਾ।

ਇਹ ਤਬਦੀਲੀ deprecation warnings ਵਿੱਚ ਭਰੋਸਾ ਮੁੜ ਸਥਾਪਿਤ ਕਰਦੀ ਹੈ।

ਡਿਵੈਲਪਰਾਂ ਲਈ ਤਿੰਨ ਕਦਮ

  1. @deprecated ਨੂੰ ਇੱਕ ਲਾਜ਼ਮੀ ਫਿਕਸ (mandatory fix) ਵਜੋਂ ਲਓ; API ਖਤਮ ਹੋ ਜਾਵੇਗੀ।
  2. ਉਹ ਵਿਆਪਕ ignore patterns ਛੱਡ ਦਿਓ ਜੋ ਅਸਲ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਛੁਪਾ ਸਕਦੇ ਹਨ।
  3. BC-change attributes 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਇੱਕ ਵੱਡੇ ਮਾਈਗ੍ਰੇਸ਼ਨ ਦੀ ਬਜਾਏ ਹੁ