Menghentikan Amaran Deprecation daripada Menjadi Amaran Palsu

Apabila PHPStan menandakan sesuatu kaedah sebagai deprecated, anda biasanya akan mencari penggantinya. Tetapi bagaimana jika tiada pengganti?

Shopware menggunakan tag @deprecated untuk mengumumkan perubahan yang dirancang—seperti menambah parameter pilihan baharu. Alat analisis statik menganggap tag tersebut sebagai deprecation sebenar dan mengeluarkan ralat bagi setiap panggilan. Gangguan ini semakin meningkat, pembangun mula mengabaikan amaran tersebut, dan amaran itu hilang nilainya. Itulah situasi klasik "memberi amaran palsu".

Dalam Shopware 6.7.14.0, kami membahagikan isyarat tersebut.

  • @deprecated – simpan ini untuk API yang akan hilang atau diganti. Anda mesti melakukan migrasi pada kod anda.
  • Atribut BC-change – gunakan ini untuk pelarasan terancang yang mengekalkan API tersebut, seperti parameter pilihan baharu atau jenis pulangan yang diubah.

Atribut baharu ini berada dalam Shopware\Core\Framework\Deprecation\BCChange. Ia memberitahu anda dengan tepat apa yang akan berubah dan bahagian mana yang terkesan.

Kami membahagikannya kepada dua kumpulan:

  • CallSiteCompatibilityChange – menjejaskan kod yang memanggil sesuatu kaedah.
  • ExtenderCompatibilityChange – menjejaskan kelas yang melakukan extend atau override pada sesuatu kaedah.

Kini anda boleh menyediakan extension anda untuk Shopware 6.8 sebelum pelancaran utama seterusnya tiba.

Contoh: sesuatu kaedah akan mendapat parameter pilihan baharu. Tambahkan parameter tersebut ke dalam override anda hari ini; kod tersebut akan berjalan pada versi semasa dan versi masa hadapan.

Perubahan ini mengembalikan kepercayaan terhadap amaran deprecation.

Tiga langkah untuk pembangun

  1. Anggap @deprecated sebagai pembaikan wajib; API tersebut akan hilang.
  2. Hentikan corak pengabaian (ignore patterns) yang luas yang mungkin menyembunyikan masalah sebenar.
  3. Perhatikan atribut BC-change dan lakukan kemas kini kecil yang selamat sekarang, berbanding melakukan migrasi besar-besaran kemudian.

Sumber: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983