Versi php mana yang terbaik untuk wordpress 2022?

Situs WordPress membutuhkan PHP, dan seiring perkembangan PHP, WordPress terus mengikutinya. Baru-baru ini, PHP 7. 4 telah menjadi versi default PHP di Platform VIP WordPress. Namun, sebagai PHP 7. 4 berakhir dari dukungan keamanannya pada November 2022, situs WordPress perlu ditingkatkan untuk mempertahankan keamanan yang kuat. Untuk alasan ini, platform WordPress VIP akan memindahkan semua aplikasi pelanggan kami untuk berjalan di PHP 8. 0

Berikut ini adalah deskripsi perubahan, dan langkah-langkah yang dapat dilakukan oleh pelanggan kami dan orang lain yang menggunakan WordPress di platform lain untuk mempersiapkannya

Daftar Isi

PHP8. 0 cerita

Dirilis pada November 2020, PHP 8. 0 menyediakan beberapa penyempurnaan dan fitur yang membuat kode baru (dan kode yang lebih pendek) lebih tahan terhadap bug

Sebagian besar pengembang akan menemukan manfaat besar dalam PHP 8. 0. Namun, sebagai versi utama, itu berisi beberapa. Ini membuat peralihan dari PHP 7. 4 to PHP 8. 0 lebih rumit daripada, misalnya, perubahan dari PHP 7. 3 to PHP 7. 4. Secara khusus, ada 49 perubahan yang dapat merusak inti PHP, dan 169 di seluruh PHP 8 secara keseluruhan, termasuk dalam pustaka dan ekstensi yang mungkin diandalkan oleh kode Anda

Kabar baiknya adalah begitu organisasi pindah ke PHP 8. 0 mereka akan menerima dukungan keamanan dari proyek inti PHP hingga November 2023. Setelah tanggal tersebut, organisasi perlu meningkatkan ke PHP 8. 1, rilis minor yang membutuhkan perubahan yang jauh lebih kecil

Fitur baru

PHP 8. 0 dirancang untuk 1) memperbaiki kasus tepi dan ketidakkonsistenan untuk menjadikan PHP bahasa skrip yang lebih solid dan dapat diprediksi, dan 2) menyediakan fitur baru untuk meningkatkan bahasa secara keseluruhan. Ini termasuk beberapa sintaks baru yang

  • Permudah penulisan kode yang diketik dengan ketat, misalnya, jenis gabungan, jenis static dan mixed, antarmuka Stringable, dan perubahan dalam penanganan angka
  • Kurangi jumlah kode yang harus Anda pertahankan, misalnya, operator nullsafe, promosi properti konstruktor, operator match, dan tangkapan yang tidak menangkap
  • Sederhanakan kode seperti mengizinkan ::class pada objek, membuntuti koma di daftar parameter, str_contains(), str_starts_with(), dan str_ends_with() fungsi, ekspresi lempar, atribut

Ini juga termasuk Parameter Bernama. Namun, perlu dicatat inti WordPress tidak mengklaim kompatibilitas dengan fitur ini. Jadi, meskipun Anda dapat memanggil fungsi kustom Anda sendiri dengan parameter bernama, Anda tidak boleh memanggil fungsi WordPress, karena nama parameter dapat berubah tanpa peringatan di masa mendatang

Proliferasi dukungan di seluruh komunitas PHP dan WordPress

Setiap kali versi baru PHP dirilis yang menyertakan sintaks baru, diperlukan waktu agar sintaks baru didukung di seluruh komunitas PHP dan WordPress

Alat pengembang PHP

Alat pengembangan PHP seperti Komposer, PHPUnit, PHP_CodeSniffer, PHPStan, Xdebug, dan berbagai IDE semuanya perlu mengenali sintaks baru dari versi baru PHP. Meskipun PHP terus dikembangkan, mungkin ada jeda waktu sebelum ekosistem lengkap di sekitar versi baru tersedia. Seringkali, bagaimanapun, perkakas dapat siap digunakan pada saat rilis final siap karena pekerjaan pengembangan telah terjadi berdasarkan rilis kandidat alfa, beta, dan rilis yang telah tersedia sebelumnya. Semua alat ini dan lebih banyak lagi sekarang mendukung PHP 8. 0, yang menjadikannya pilihan yang baik untuk mengembangkan kode PHP dan khususnya untuk mengembangkan WordPress.   

Inti WordPress

Selanjutnya, inti WordPress perlu mendukung PHP 8. 0. Proyek WordPress memiliki sejarah panjang kompatibilitas dengan versi baru PHP pada saat dirilis. Per posting yang ditulis dengan baik di Make WP ini, WordPress memiliki "kompatibilitas beta" dengan PHP 8. 0 sejak WordPress 5. 6 rilis pada Desember 2020. Apa yang dimaksud dengan "kompatibilitas beta"? . 0, tetapi fitur seperti mendeklarasikan tipe ketat di file inti WordPress, atau menggunakan parameter bernama dengan fungsi inti WordPress, tidak didukung

Platform WordPress VIP

Platform WordPress VIP telah mendukung PHP 8. 0 (dan PHP8. 1) sejak Mei 2022, termasuk rangkaian plugin dan fitur yang memungkinkan platform memenuhi kebutuhan perusahaan.  

Plugin pihak ketiga

WordPress memiliki puluhan ribu plugin, dan tingkat dukungan untuk PHP 8. 0 sangat bervariasi. Misalnya, kata yang baru dicadangkan mungkin masih digunakan oleh plugin, atau parameter yang diteruskan ke fungsi asli PHP mungkin bukan tipe yang diharapkan sekarang. Dengan demikian, plugin pihak ketiga mungkin merupakan salah satu area yang tidak kompatibel dengan PHP 8. 0 dapat memengaruhi aplikasi Anda

Di bawah ini Anda dapat mempelajari cara memeriksa beberapa ketidakcocokan ini. Pilihannya termasuk meminta individu/tim upstream untuk melakukan perbaikan dan membuat rilis baru, atau memiliki tim pengembangan internal atau agensi, seperti salah satu mitra unggulan kami, melakukan fork plugin dan melakukan perbaikan sendiri

Plugin khusus

Hampir setiap pelanggan di platform WordPress VIP menggunakan satu atau lebih plugin khusus. Seperti plugin pihak ketiga, mereka juga perlu diperiksa kompatibilitasnya. Meminta pengembang asli untuk mengatasi masalah yang ditemukan umumnya merupakan tindakan terbaik

Tema pihak ketiga atau khusus

Meskipun plugin adalah sumber masalah kompatibilitas yang paling mungkin, jangan lupa bahwa tema pihak ketiga dan khusus juga harus kompatibel dengan PHP 8. 0. Pendekatan yang sama untuk memeriksa kompatibilitas kode plugin berlaku untuk kode tema

Versi php mana yang terbaik untuk wordpress 2022?

Bagaimana menemukan PHP8. 0 masalah kompatibilitas

Ada empat pendekatan utama yang dapat digunakan tim pengembangan untuk meninjau kode guna menentukan masalah kompatibilitas

  1. Gunakan PHP_CodeSniffer dengan standar PHPCompatibility
  2. Mengatasi Peringatan PHP yang dikenal yang merupakan Kesalahan Fatal PHP di bawah PHP 8. 0
  3. Buat tes otomatis
  4. Gunakan PHPStan/Psalm atau alat analisis statis lainnya

Gunakan PHP_CodeSniffer dengan standar PHPCompatibility

PHP_CodeSniffer (PHPCS) memberi token file PHP dan mendeteksi pelanggaran terhadap seperangkat standar pengkodean yang ditentukan. Ada paket untuk Standar Pengkodean WordPress, dan Standar Pengkodean VIP kami sendiri (yang kami anjurkan untuk digunakan oleh pelanggan)

Ada juga paket yang disebut PHPCompatibility dan PHPCompatibilityWP, dan standar ini menganalisis basis kode untuk kompatibilitas lintas versi PHP.  

Karena hasilnya bergantung pada kapabilitas dan kesiapan alat, penting untuk menggunakan cabang develop dari PHPCompatibility hingga versi 10 dirilis. Versi 10 akan berisi sniffs yang terkait dengan PHP 8. 0 (dan PHP8. 1) kompatibilitas. Lihat petunjuk tentang cara menyiapkan konfigurasi Anda untuk menggunakan cabang develop. Setelah versi 10 dirilis, Anda dapat menggunakan versi tersebut

Paket PHPCompatbilityWP dibangun di atas paket PHPCompatibility tetapi mematikan beberapa centang untuk item kompatibilitas mundur yang berisi inti WordPress itu sendiri

Dengan pengaturan PHPCS dan PHPCompatibility/PHPCompatibilityWP, Anda dapat menjalankan pemeriksaan

phpcs --standard=PHPCompatibilityWP --severity=1 --runtime-set testVersion 8.0- --extensions=php <path-to-code>

static1 dapat berupa satu plugin atau tema khusus atau pihak ketiga jika Anda ingin memulai dari yang kecil, atau seluruh repositori jika Anda ingin melihat semua pelanggaran yang perlu diselidiki dan ditangani

Langkah-langkah pemindaian tidak akan mendeteksi setiap kemungkinan masalah kompatibilitas versi PHP (seperti jenis nilai runtime yang salah), tetapi akan membantu mengidentifikasi masalah paling umum terkait sintaksis

Mengatasi Peringatan PHP yang dikenal yang merupakan kesalahan fatal PHP di bawah PHP 8. 0

PHP 8. 0 melihat beberapa peringatan mesin yang direklasifikasi, di mana Peringatan menjadi Kesalahan fatal dan Pengecualian TypeError (dan beberapa Pemberitahuan menjadi Peringatan). Teks Peringatan PHP untuk dicari di bawah PHP 7. 4 adalah

  • static_2
  • static_3
  • static_4
  • static_5
  • static_6
  • static_7
  • static_8
  • static_9
  • mixed0
  • mixed1
  • mixed2
  • mixed_3
  • mixed_4
  • mixed5
  • mixed6

Memperbaiki Peringatan ini sangat penting agar aplikasi kompatibel dengan PHP 8. 0

Catatan. Ada kesalahan fatal lainnya di bawah PHP 8. 0 yang bahkan bukan Peringatan di bawah PHP 7. 4. Contohnya termasuk

  • Metode pribadi tidak dapat dinyatakan final kecuali untuk konstruktor
  • Tanda tangan tidak valid untuk metode sihir
  • Validasi tanda tangan metode sifat abstrak
  • Menggunakan mixed_7 dengan kelas induk
  • Tanda tangan metode kelebihan muatan yang tidak kompatibel (Prinsip Pergantian Liskov)

Mengatasi perubahan yang diketahui ini adalah tempat yang baik untuk memulai. TypeError akan dilemparkan secara konsisten untuk semua fungsi PHP internal, misalnya ketika tipe parameter yang tidak valid diteruskan, bahkan ketika pemeriksaan tipe yang ketat tidak dideklarasikan

Perhatikan juga bahwa operator mixed_8 tidak akan lagi membungkam kesalahan fatal di bawah PHP 8. 0

Secara alami, aplikasi Anda idealnya tidak menghasilkan kesalahan, tidak ada peringatan, dan tidak ada pemberitahuan. Anda didorong untuk mengatasi apa pun yang Anda temukan. Beberapa Peringatan PHP di bawah 8. x akan menjadi kesalahan fatal di bawah PHP 9. 0, misalnya, berpotensi menghasilkan logika yang salah di bawah PHP 8. x. Membangun waktu pengembangan sebelum dan sesudah rilis untuk memperbaiki masalah tersebut dan masalah yang "lolos dari penemuan" selama pengembangan adalah praktik terbaik. Ini juga merupakan investasi dalam stabilitas situs, dan kemampuannya untuk secara akurat memenuhi kriteria penerimaan untuk fitur terkait

Buat tes otomatis

Ada banyak jenis pengujian otomatis, tetapi yang kami maksud di sini

  • Pengujian unit—mengejek semua fungsi atau kelas yang ditentukan WordPress, dan tidak memerlukan instance database agar tersedia untuk menjalankan pengujian
  • Tes integrasi—memuat WordPress dan menggunakan database pengujian aktual

Topik ini terlalu besar untuk dibahas dengan baik di sini, tetapi ada beberapa hal yang perlu dipertimbangkan

  • Hasilnya tergantung pada kelengkapan test suite. Jika Anda tidak memiliki banyak pengujian, Anda akan kekurangan cakupan yang diperlukan untuk memastikan kompatibilitas
  • Gunakan pernyataan tegas. Misalnya, menggunakan mixed_9 melakukan perbandingan longgar, sedangkan Stringable0 juga memeriksa jenisnya
  • Gunakan cakupan kode yang ketat. Tambahkan dan ke file konfigurasi PHPUnit, lalu gunakan untuk menemukan tingkat akurat cakupan kode internasional di seluruh pengujian
  • Menguji jalur senang (perilaku berdasarkan input yang diharapkan) dan tidak bahagia (perilaku berdasarkan input yang tidak terduga) untuk memastikan bahwa fungsi gagal dengan cara yang diharapkan, karena di sinilah sebagian besar masalah terkait keketatan terjadi
  • Jalankan pengujian Anda di PHP 8. 0. Untuk pengujian Integrasi (WordPress), perubahan dilakukan pada tahun 2021 pada rangkaian pengujian inti WordPress yang dibuka kuncinya menggunakan versi PHPUnit yang lebih baru, yang kemudian mendukung PHP 8. 0. Ini didukung oleh paket WP Test Utils, yang mencakup PHPUnit Polyfills, dukungan Brain Monkey dan Mockery, stub fungsi tambahan untuk fungsi WordPress, dan akses ke semua utilitas uji asli WP seperti metode pabrik untuk pembuatan konten
  • Pertimbangkan untuk menulis tes sebelum mencoba perbaikan, agar lebih yakin bahwa perubahan kompatibilitas telah berhasil

Gunakan PHPStan/Psalm atau alat analisis statis lainnya

Meskipun PHPCS akan mendeteksi beberapa ketidaksesuaian, ada beberapa perubahan runtime yang tidak dapat ditangkap oleh PHPCS. Salah satu contoh yang akan terlewatkan adalah fungsi PHP asli yang lebih ketat dengan tipe apa yang dapat diteruskan sebagai parameter

Alat seperti PHPStan, Psalm, atau alat analisis statis lainnya dapat membantu di sini. Namun, agar paling efektif, mereka membutuhkan basis kode Anda untuk menggunakan tipe yang ketat (parameter dan tipe pengembalian dalam kode), atau didokumentasikan dengan benar (baris Stringable4 dan Stringable5 di DocBlocks)

Alat-alat ini biasanya memiliki tingkat aturan yang memungkinkan untuk memperbaiki masalah tingkat terendah terlebih dahulu, lalu mengintegrasikan alat tersebut lebih lanjut secara bertahap untuk meningkatkan kualitas basis kode Anda

Anda dapat menambahkan pengetahuan untuk jenis kode inti WordPress melalui ekstensi seperti phpstan-wordpress dan psalm-plugin-wordpress

Setelah dikonfigurasi, setiap proses akan menyoroti di mana Anda meneruskan jenis yang tidak diharapkan ke dalam fungsi, yang dapat menyebabkan Pengecualian TypeError yang fatal dilemparkan. Masing-masing ini perlu diperbaiki

Dalam banyak kasus, Anda mungkin dapat menekan pengecualian TypeError melalui penggunaan blok try-catch atau typecasting. Namun, kami sangat menyarankan Anda untuk tidak melakukannya. Memperbaiki akar penyebab akan menghasilkan kode yang lebih kuat, tidak rapuh, dan rawan kesalahan, dan hampir selalu terbayar dalam jangka panjang

Dapatkan pembaruan konten terbaru

Ingin diberitahu tentang konten baru?

Cara memulai dengan PHP 8. 0 di WordPress VIP

Jalankan aplikasi secara lokal

Menjalankan instance aplikasi secara lokal adalah langkah pertama yang masuk akal untuk dapat mendeteksi dan memperbaiki masalah kompatibilitas apa pun. Meskipun Anda dapat menggunakan lingkungan pengembangan lokal apa pun, untuk memastikan paritas terbaik dengan platform WordPress VIP, kami merekomendasikan Lingkungan Pengembangan Lokal VIP. Dengan menjalankan perintah Stringable_6 (dengan VIP-CLI 2. 9. 5 atau lebih baru) dan kemudian menyelesaikan Wizard Penyiapan selanjutnya, aplikasi Anda akan berjalan secara lokal dengan PHP 8. 0

Periksa Bot Analisis Kode VIP pada permintaan penarikan

Jika Anda melihat permintaan penarikan yang dibuat ke repositori Anda di bawah organisasi wpcomvip, Anda akan melihat Bot Analisis Kode VIP memberi Anda umpan balik tentang PHPCS, linting PHP, dan linting SVG

Untuk langkah Linting PHP, bot akan melakukan lint kode PHP dengan versi PHP apa pun yang digunakan untuk aplikasi yang digunakan repositori. Jika versi itu adalah PHP 7. 4, sekarang juga, dalam persiapan untuk peralihan yang akan datang.  

Aktifkan PHP 8 di aplikasi WordPress VIP Anda

Setelah Anda melakukan pemeriksaan dan perbaikan sebanyak mungkin secara lokal, saatnya untuk mengaktifkan PHP 8. 0 pada aplikasi VIP WordPress Anda. Mulailah dengan lingkungan terendah Anda, dan periksa apakah semuanya terlihat baik (termasuk log PHP melalui vip-cli atau Log Kesehatan di Dasbor VIP) sebelum beralih ke lingkungan produksi.  

Anda dapat mengaktifkan PHP 8. 0 di lingkungan apa pun melalui fitur Manajemen Perangkat Lunak baru di Dasbor VIP. Lihat pengumuman Lobi dan  untuk mempelajari lebih lanjut

Manfaatkan bantuan proaktif

Tim akun untuk pelanggan Premier sudah menghubungi pelanggan untuk mendiskusikan bagaimana kami dapat mendukung mereka. Mereka akan dikirimi hasil dari PHPCS dan diberikan panduan tentang cara menjalankan pemeriksaan ini sendiri. Peringatan PHP yang akan menjadi kesalahan fatal juga akan disorot, memberi mereka langkah awal untuk mengatasi ketidaksesuaian

Bagaimana dengan PHP8. 1?

Platform WordPress VIP juga mendukung PHP 8. 1. Ada sedikit perubahan antara PHP 8. 0 dan PHP8. 1 dari yang ada antara PHP 7. 4 dan 8. 0, yang berarti harus ada lebih sedikit ketidakcocokan untuk diatasi

PHP 8. 1

  • Memiliki dukungan aktif dari pengembang inti PHP hingga November 2023, dan dukungan keamanan hingga November 2024
  • Dapat menangani lebih banyak permintaan per detik daripada PHP 8. 0
  • Memiliki dukungan "kompatibilitas beta" di WordPress 5. 9 ke atas – ini berarti ada beberapa pemberitahuan penghentian dalam persiapan untuk PHP 9, tetapi tidak memengaruhi perilaku inti WordPress

Perubahan berguna yang diperlukan untuk PHP 8. 0, seperti menggunakan kode yang diketik dengan ketat dan menambahkan pengujian otomatis, akan membantu dengan PHP 8. 1 peluncuran, serta pemutakhiran untuk WordPress 6. 1, 6. 2, 6. 3 dan seterusnya, serta rilis fitur apa pun yang Anda lakukan. Proses QA sering kali menjadi hambatan, jadi menggunakan beberapa alat dan pendekatan yang telah kami uraikan dapat mengurangi pekerjaan manual dan memberi Anda lebih percaya diri saat menerapkan perubahan ini

Versi PHP apa yang harus saya miliki dengan WordPress?

WordPress. org merekomendasikan setidaknya PHP 7. 4 . Anda mungkin melihat pesan peringatan di dashboard WordPress Anda yang meminta Anda untuk memutakhirkan PHP jika masih menggunakan versi yang lebih rendah dari 7. 4. Anda dapat menemukan langkah-langkah untuk meningkatkan versi WordPress Anda di bawah ini.

Apakah PHP7. 4 stabil untuk WordPress?

PHP versi 7. 4 sangat direkomendasikan oleh tim WordPress resmi.

Haruskah saya meningkatkan ke PHP 7. 4 WordPress?

PHP 7 baru. Pembaruan 4 memungkinkan situs Anda mencapai kecepatan kilat dan menyertakan keamanan tambahan dengan pemantauan uptime untuk menambal setiap potensi pelanggaran keamanan dengan cepat. Namun, jika Anda masih menggunakan versi lama PHP, 7. 3 atau lebih rendah, maka Anda menempatkan situs Anda dalam risiko besar .

Apakah PHP 8 lebih baik dari 7?

PHP 8 lebih cepat daripada PHP 7 , sintaks memerlukan lebih sedikit kode, dan dukungan pengetikan lebih baik. Tiga kategori peningkatan ini memberikan rilis versi utama PHP yang kuat.