WordPress ve PHP 8 – Uyumluluk ve avantajlar!

Yayınlanan: 2021-01-04

Teknoloji meraklılarının çoğu PHP 8.0 ile heyecanlandı ve kesinlikle bu sefer değişiklikler çok büyük. PHP 8'in uyumluluğunu, yapılandırmalarını, faydalarını vb. anlamak için herkes biraz zaman harcayacak ve hepsinin arasında, ortaya çıkan en büyük sorulardan biri şudur: “WordPress zaten PHP 8 ile uyumlu mu ve değilse, o zaman hangi eylemlere ihtiyaç var? ”

WordPress ve PHP 8 - Uyumluluk ve avantajlar!

Pekala, PHP 8 yayınlanır yayınlanmaz, uzman zamanımız en derin test düzeyine daldı ve sonuç herkesi şok edebilir! Evet, artık her şeyi biliyoruz ve raporlarımızı ve tadım sonuçlarımızı sergilemekten zevk alıyoruz.

Sadece neyin değiştiğini göstermekle kalmayacak, aynı zamanda PHP 8'e güncelleme yapıp yapmamanız konusunda size saf bir tavsiye vereceğiz.

PHP 8'de çok fazla önemli değişiklik var: Ama neden?

PHP 8, PHP'nin büyük bir güncellemesidir ve ana sürümlerdeki negatifleri son küçük sürüm aralığından kaldırmak yaygın bir uygulamadır. Çok konuşulan PHP 8 için, önceki 7.* sürümlerinde bazı kırılma değişiklikleri azaltıldı.

Bu nedenle, yıllar içinde özenle güncellenen ve derogasyonlu API'lerini düzelten projeler için yükseltme yapmak hiç de zor olmamalı. Doğruyu söylemek gerekirse, PHP 7.* sürümleri, PHP'nin önceki sürümlerinin aksine, çok daha büyük bir kullanımdan kaldırma kümesi gözlemlemiştir.

PHP 5.6'dan PHP 7'ye oldukça basit bir geçiş olduğunu söyleyebiliriz, ancak 7.x'ten 8'e geçmek, özellikle birkaç mevcut eklentinin yanı sıra WordPress dahil olmak üzere eski kod tabanları için biraz acı verici olabilir.

Elbette, iyi yazılmış kod tabanları veya en son PHP sürümlerine sahip güncel kod tabanları için büyük sorunlar oluşmayacaktır. Ancak gerçek şu ki, WordPress böyle bir kod tabanı değildir.

WordPress zaten PHP 8 ile uyumlu mu?

Dürüst olmak gerekirse, belki WordPress zaten PHP 8 ile uyumludur, ancak bu kelimeleri mühürlemek mümkün değildir. WordPress, her zaman PHP'nin en son sürümleriyle uyumlu olmayı hedefler . Ancak, bu kılavuzun ilerleyen bölümlerinde en büyük endişeleri derinlemesine analiz ettik.

Wordpress-ve-PHP-Uyumluluğu2

Mevcut stratejiler kullanılarak bulunabilecek uyumluluk sorunlarının çoğu için mükemmel düzeltmeleri bulma konusunda harika bir iş çıkardık. Kesinlikle orada olanların ve bunlarla ilgili sorunların daha derinlerine dalacağız.

Hangi performans değişiklikleri geliyor?

PHP 8 ile gelen potansiyel olarak heyecan verici en önemli özellik JIT (Tam Zamanında) derleme ve hata ayıklamadır. Bildiğimiz gibi PHP, yorumlanmış bir dildir, yani çalıştığında makine koduna çevrilir.

JIT, sık kullanılan kodu izler ve yeniden kullanılabilir hale getirmek için makine kodu çevirisini optimize etmeye çalışır. Şimdi, bu, belirli bir işlevsellik için büyük bir performans artışıyla sonuçlanabilir.

JIT'in çeşitli dillere, örneğin JavaScript'e dahil edilmesi, tarihsel olarak yeni uygulamalar patlaması gerçekleştirdi. Örneğin, JS'de çalışan sanal makineler, web'in ilk günlerinde hayal gücünden yoksun olurdu. Geçmişte sunucuya modüllerin yüklenmesini gerektiren birkaç görev, çekirdek PHP kitaplıklarını kullanarak pratik olacaktır.

Şu an için, WordPress gibi web uygulamaları için gerçek performans artışı minimum düzeydedir. Bunun yanı sıra, bir geliştiricinin veya ortalama bir WordPress kullanıcısının bu yeni özelliğin avantajlarından faydalanması çok uzun zaman alacaktır.

Geliştiricilerin hayatlarını kolaylaştıracak birkaç yeni özellik daha var; Bunların öngörülebilir gelecekte WP temalarında ve eklentilerinde kullanılması pek olası değildir, çünkü çoğunluğu PHP'nin birkaç WordPress sitesi tarafından halen kullanılmakta olan önceki sürümleriyle uyumluluğu bozacaktır.

WordPress siteniz için PHP nasıl güncellenir?

Bu kılavuzda, PHP'yi en son sürüme, en önemlisi WordPress sitenizi bozmadan ne kadar rahat bir şekilde güncelleyebileceğinizi açıklayacağız.

Yolu öğrenmeye hevesliyseniz, mevcut PHP sürümünüzü kontrol edin, ardından WordPress'i en yeni sürüme güncelleyin. Bundan sonra, “one.com PHP tarayıcısını” kurun ve olası sorunları gidermek için bir tarama çalıştırın. Ayrıca, PHP'yi en son sürüme güncelleyin ve sitenizin beklendiği gibi çalışıp çalışmadığını doğrulayın.

Tüm süreci gösterelim.

Adım 1: Mevcut PHP sürümünüzü kontrol edin

En başta, şu anda hangi PHP sürümünü kullandığınızı kontrol etmelisiniz. Web sitenizin güncel PHP sürümünün bilgisini phpinfo sayfasından alabilirsiniz.

Eğer cPanel üzerinde çalışıyorsanız, cPanel'de PHP sürümünün nasıl görüntüleneceği ve değiştirileceği makalesinden PHP sürümünü inceleyebilirsiniz.

PHP sürüm 7.3 veya daha üstünü kullanıyorsanız, her şey yolunda demektir. PHP 7.2'ye sahip olanlar için bir güncelleme gereklidir. Lütfen 2. adıma değer verin.

2. Adım: WordPress'i en son sürüme güncelleyin

Herhangi bir arızadan gerçekten kaçınmak istiyorsanız, WordPress çekirdeğinin ve tüm eklentilerin ve temaların en son sürüme güncellendiğinden emin olun.

  1. WordPress Yöneticinize giriş yapın ve Kontrol Paneli > Güncellemeler'i tıklayın .
  2. WordPress'in en son sürümünün kurulu olup olmadığını ve tüm temaların ve eklentilerin güncel olup olmadığını kontrol edin. WordPress'inizi şimdi en son sürüme güncelleyin.

Adım 3: “one.com PHP tarayıcısını” kurun.

  1. WordPress Yöneticinizde one.com > Eklentiler'e dokunun .
  2. one.com PHP tarayıcısını bulun ve Şimdi yükle'ye dokunun .
  3. Şimdi Etkinleştir'i tıklayın ve bir sonraki adıma geçin.

4. Adım: Bir tarama çalıştırın ve olası sorunları düzeltin

  1. Soldaki menüde PHP tarayıcı öğesine dokunun .
  2. PHP sürüm 7.4'e , ardından “ Tüm temalar ve eklentiler ”e ve ardından Taramayı başlat'a dokunun .
  3. Tarama bittiğinde devam edebilirsiniz.
  4. Üç sonuç elde edebilirsiniz:

Uyumlu = Her şey yolunda demektir!

Uyarı = Çalışması gerektiği, ancak yaklaşmakta olan PHP sürümüyle ilgili sorunlara yol açabileceği anlamına gelir.

Hata = O kadar iyi değil, güncellemeden sonra kesinlikle sorunlara neden olacaktır.

Hataları okuyan tüm temaları veya eklentileri, en son sürüme güncelleyerek veya aynı işlevi sağlayan alternatif bir eklentiyle değiştirerek düzeltin.

İpucu: Yalnızca düzenli olarak güncellenen ve WordPress'in en son sürümüyle uyumluluk sorunu olmayan eklentileri kullanan eklentileri kullanmanızı öneririz. Bunun yanı sıra, sitenin performansını artırmak için istenmeyen eklentileri kaldırmak iyi bir uygulamadır.

Adım 5: PHP'yi 8.0 sürümüne güncelleyin

Artık PHP'yi güncellemeye hazırsınız. PHP hata mesajlarını aynı anda açmanızı öneririz. Kodla ilgili bir sorun olması durumunda, buna neyin neden olduğunu ve tam olarak nerede olduğunu söyleyen hata mesajları görürsünüz.

  1. Kontrol panelinde PHP ve veritabanı ayarlarına dönün .
  2. PHP hata mesajlarına ilerleyin .
  3. Hata mesajlarını Açık olarak ayarladıktan sonra Güncelle'yi tıklayın .
  4. Bunun hemen altında sürümü değiştirin ve Güncelle öğesine dokunun .

Adım 6: Web sitenizin beklendiği gibi çalışıp çalışmadığını doğrulayın.

Artık PHP sürümünü güncellediniz ve değişikliklerin uygulanması en az 20 dakika sürecektir . Siteniz çok sayıda ziyaretçi alıyorsa, zaman çerçevesi birkaç saate kadar uzayabilir. Önümüzdeki 24 saat içinde web sitenizi en az birkaç kez kontrol etmenizi tavsiye etmemizin nedeni budur.

Siteniz beklediğiniz gibi çalışmıyorsa, en olası sorun temanız veya herhangi bir eklentidir. Sorunlara tam olarak neyin neden olduğunu bulmak için:

  1. Geçici olarak varsayılan WordPress temasına geçin, “Yirmi Onyedi” deriz.
  2. Yüklü tüm eklentileri seçin ve tamamen devre dışı bırakın.
  3. Temaları ve tüm eklentileri tekrar tek tek etkinleştirin ve sitenizin hala çalışıp çalışmadığını her seferinde kontrol etmeye devam edin. Suçluyu bu şekilde yakalayabilirsiniz.

Teknik olarak konuşursak, o zaman WordPress'in şu anki gecesinin çok tartışılan PHP 8 ile uyumluluğu, PHP'nin yeni bir sürümü ortaya çıkmadan hemen önce WordPress sürümlerinde yaşadığımıza benzer bir seviyede.

Testlerimiz önemliydi, düzeltmeler de aynı derecede titizdi ve sorun giderme düzeyi, WordPress çekirdeğindeki PHP uyumluluğu düzeltmelerinin herhangi biri kadar büyüktü. Ancak, bu kılavuzu takip etmezseniz, uyumluluk zorluklarını anlayamazsınız ve PHP 8'den maksimum faydayı elde edemezsiniz.

PHP 8'e dahil edilen büyük miktardaki yıkıcı değişiklikler ve değişiklik türleri, sürümler arası araçlardaki birkaç ek karmaşıklığın yanı sıra, bu uyumluluk sorununu, PHP'nin önceki sürümlerinde daha önce deneyimlediklerimizden kesinlikle daha büyük bir canavar haline getiriyor. Bu rapor aynı durumu açıklamayı amaçlamaktadır.

WordPress ve PHP8 Uyumluluk zorlukları

Size mevcut bir kod tabanını PHP 8 ile uyumlu hale getirmek için uygulayabileceğiniz birkaç strateji göstereceğiz.

  • Sözdizimsel sorunları tespit etmek için PHPCompatibility gibi statik analiz araçları.
  • Çalışma zamanı sorunlarını tespit etmek için otomatik test.
  • Çalışma zamanı sorunlarını tespit etmek için manuel test.

Test takımınızın kapsamına ve sözdizimsel değişikliklerin ve çalışma zamanının oranına bağlı olarak, bu stratejiler, kod tabanının yeni bir PHP sürümüyle (şu anda PHP 8 tartışılıyor) uyumluluğunu düzeltmek için güzel bir şekilde hizmet eder.

Gerçekten, PHP 8 ve WordPress söz konusu olduğunda, WordPress'in PHP 8 ile mükemmel uyumluluğunu sağlamak için bu stratejilere güvenmeyi zorlaştıran birkaç ek zorluk vardır. Aşağıda, uyguladığımız stratejiler hakkında rapor vereceğiz. WordPress için ve sonuçları paylaşın.

Statik analiz araçları

PHP 8.0'daki birkaç değişikliğin doğası gereği, statik analiz kullanılarak tespit edilebilecek sorunlar sınırlıdır. Statik analizin geleneksel potansiyellerinin ötesine geçmeye çalıştığı ve değişkenlerin, sabitlerin ve çalışma zamanı tipinin değerini izlemeyi planladığı bu durumlarda, bu tür taramaların sonuçları kesinlikle yanlış pozitiflere eğilimli olacaktır.

Statik-analiz-araçları

Bunun yanı sıra, PHP Uyumluluğu, PHP'nin sürümler arası uyumluluğuyla ilgili sorunları bulmayı amaçlayan tek ve tek statik analiz aracıdır.

PHP Uyumluluğunun yanı sıra, diğer statik analiz araçları daha geniş bir sorun kapsamı hakkında rapor verir. PHP'nin sürümler arası uyumluluğuyla ilgili ve aslında doğru olan sorunları tespit etmek için sonuçlara değer vermek oldukça zaman alıcıdır ve özellikle en az miktarda gürültü için yapılandırma konusunda derinlemesine araçlarla ilgili bilgi gerektirir.

Aynı zamanda, bu araçlar sürekli bir kararsızlık içindedir, PHP sürümündeki değişikliklere devam etmeye ve olası taramaları güncellemeye çalışırlar. Bu nedenle, bu araçların gelecekte daha fazla sorunu tespit etmesini bekleyebiliriz.

Bu nedenle, halihazırda olanlardan ve şu anda daha fazla bulunabileceklerden bağımsız olarak, bu araçların (yakın) gelecekte daha fazla sorun bulma olasılığı yüksektir.

PHPCompatibility ile WordPress Tarama

“__destruct() artık __construct() içinde die()'den sonra çağrılmayacak” PHPCompatibility tarafından bulunan başka bir PHP 8 sorunudur. Bu, tarayıcı tarafından mükemmel bir şekilde algılanır. Ancak daha detaylı bir inceleme sonucunda bu durumda bir sorun olmadığı anlaşılmıştır.

Bunun yanı sıra, PHPCompatibility, “Eklenti/Tema düzenleyici” tarafından kullanılan kodda bir sorun tespit etti. İlgili kodun analizleri, kodda temel bir gözetimin varlığını belirlemiştir. Editörde WordPress, kodun minimum analizini yapmak için sabırsızlanıyor; ancak PHP 5.3+ kodunu hesaba katmaz.

PHP8'deki ilgili değişiklikler dikkate alınırken, bu gözetim artık çözülmesi daha karmaşık hale getirildi. Geliştirilen sürüm ile PHPCompatibility ile taramalar yaptık ve sonuçlar beklediğimiz gibi PHP'nin önceki güncellemelerinde elde ettiğimizden çok farklıydı. Tarayıcı tarafından algılanan sorunlar harici olarak korunur.

Exakat ile WordPress Tarama

WP ana hattına dayalı olarak 16 Ekim'de gerçekleşen en son genel taramadan bahseden Exakat, toplamda 149.567 sorun bildiriyor.

PHP 8 uyumluluk raporu bize toplam 93 sorunu gösteriyor. Ancak, PHP 8 ile ilgili bir analiz numarası rapora dahil edilmediğinden eksiktir.

WordPress tür bildirimleri kullanmadığından ve bu nedenle türler bulunan koddan ve docblock'larda gösterilen türlerden tahmin edildiğinden bu raporların çok sayıda yanlış pozitif içermesini beklerken, bu sorunlar yine de ayrı ayrı incelenmelidir.

Bulunan problemlerin sadece %1'i doğru olsa da, hala ele alınması gereken ~450 hataya düşecektir. Bunun yanı sıra, gerçek sorunları yanlış pozitiflerden ayıklamak için gereken büyük miktarda zaman.

PHPStan ile WordPress Tarama

PHPStan ile yapılan taramalar, uzaktan kullanılabilir sonuçlar elde etmek için tamamen özelleştirilmiş bir kural seti gerektirir ve yine de, çıktıyı kullanılamaz hale getirerek birkaç yanlış pozitif ile delik deşik olduklarını kanıtladılar.

Not: PHPStan araçlarını eleştirmiyoruz, ancak bunun nedeni büyük ölçüde WordPress'in tür bildirimlerini neredeyse hiç kullanmaması ve diğer yandan PHPStan'in öncelikle modern kod kullanan projelere meyilli olması değil mi?

En temel yapılandırmaları içeren bir ilk tarama, 20.000'den fazla sorun verecektir. Özellikle PHP 8 ile ilgili sorunları hedef alan, yukarıda belirtilen yüksek düzeyde özelleştirilmiş kural kümesiyle yapılan bir tarama, 5. düzeyde hala tam olarak 580 sorun ve 7. düzeyde ek 2.150 olası sorun verir. Bunlar muhtemelen birkaç yanlış pozitif içerir ve yine de 380 sorun verir daha fazla. benzer bir uyarı ile 8. seviyede.

Bilinmeyen bir yapılandırmaya dayalı olarak sorunların bir listesini ele almak için yakın zamanda bir Trac bileti açıldı, ancak geçen parametre türü uyumsuzluklarını tam olarak hedefledi (seviye 5). Taslak PR , bu sorunları gidermek için kullanılabilir.

Bu PK'nın başlangıç ​​değerlendirmesi, önerilen düzeltmelerin çoğunun değişkenleri beklenen türe göre yazacağını ve sorunları gizleyeceğini , aslında bunları düzgün bir şekilde kontrol ederek düzeltmediğini gösterir. Bu, bu değişikliklere katı birim testlerinin eşlik etmemesi durumunda uygulamada beklenmeyen davranışlara yol açar. Bunun yanı sıra, baştan aşağı hataları kesin olarak daha fazla hata ayıklarken artan zorlukla sonuçlanabilir.

Şu anda, önerilen düzeltmelerin garanti edilip edilmediği veya tanımlanan sorunların yanlış pozitif olarak gözlemlenmesi gerektiği doğrulanmadı.

Test yapmak

PHP8'deki sorunlu takasların doğası gereği statik analiz bu kadar ileri gidebilir. Yazılımı manuel olarak gözden geçirmek ve test etmek çok zahmetli bir iş olduğunu kanıtlıyor ve insanlar da dikkat edilmesi gereken çok şey olduğunda bazı şeyleri gözden kaçırmaya oldukça meyillidir.

Şimdi, son kullanıcılar tarafından gerçekleştirilen testlerden bahsetmişken , nispeten yararsız olduklarını kanıtlıyorlar, çünkü bu normalde "mutlu yolların" test edilmesiyle sonuçlanacaktır. Daha güvenilir sonuçlar elde etmek istiyorsak, kapsamlı keşif ve regresyon testlerine ihtiyacımız var.

Test yapmak

Yüksek kalitede otomatik testlere sahip olmak ve bunları PHP 8'de çalıştırmak her şeyden daha önemlidir. Bu, beklenecek PHP 8.0 sorununun mükemmel bir göstergesini sunacaktır.

Teknoloji meraklılarının çoğu PHP 8.0 ile heyecanlandı ve kesinlikle bu sefer değişiklikler çok büyük. Herkes PHP 8'in uyumluluğunu, konfigürasyonlarını, faydalarını vb. anlamak için biraz zaman harcayacak ve hepsinin arasında, ortaya çıkan en büyük soru şudur: “WordPress zaten PHP 8 ile uyumlu mu ve değilse, hangi eylemler ihtiyaç vardır."

PHP 8 yayınlanır yayınlanmaz, uzman zamanımız en derin test düzeyine daldı ve sonuç herkesi şok edebilir! evet, artık her şeyi biliyoruz ve raporlarımızı ve testlerin sonuçlarını göstermekten zevk duyuyoruz.

Şimdi PHP 8'de otomatik testler çalıştırmaya geçelim.

PHP 8'de otomatik testler çalıştırma

PHPUnit 9.3, resmi olarak PHP 8.0 ile uyumlu olan ilk PHPUnit sürümüdür ve Ağustos 2020'de piyasaya sürüldü. Peki, birim testi için fiili araç olduğundan PHP üzerinde çalışan otomatik bir test paketini çalıştırmak zordur.

otomatik çalışan

PHP 8 üzerinde çalışacak otomatik bir test takımı almak, PHP dünyasında birim testini gerçekleştirmek için fiili araç olarak bizi bir sonraki tavşan deliğine götürür; PHPUnit normalde her yıl, önceki PHP sürümleri için her büyük düşüş desteğiyle büyük bir sürüm çıkarır. Kırılma değişiklikleri getiriyor, ancak PHPUnit 9.3, yukarıda bahsettiğimiz gibi PHP 8.0 ile resmi olarak uyumlu olduğu için endişelenmenize gerek yok!

WordPress'in en azından PHP 5.6'yı desteklediğini biliyoruz. PHP 8.0 üzerinde testler yapmak için, WordPress ile ilgili herhangi bir test paketinin PHPUnit 5'ten PHPUnit 9'a kadar tam uyumlu olması gerekir. Elbette, araçlar size bu konuda yardımcı olmak için oluşturulmuştur; bir test takımını uyumlu hale getirmek için bu araçları uygulamak hala çaba ve zaman harcar.

WordPress Core için PHP8 üzerinde çalışan testleri alma

WP Core testleri şu anda PHP 8'e karşı geçiyor ve çalışıyor. Bu testler PHPUnit 7.5'in oluşturucu yüklü sürümünde yürütülüyor. PHPUnit 9.3, PHP 8 ile resmi olarak uyumlu olan en eski PHPUnit sürümü olmasına rağmen.

Bu son sorun, PHPUnit 9.3'ten seçilen sayıda dosya/sınıfın WordPress test paketine kopyalanmasıyla giderildi, PHPUnit'in yerel sınıfları Composer otomatik yükleme neslinden hariç tutuldu ve PHPUnit 9.3'ten kopyaların WordPress test paketinde kullanımını destekledi. Bu şimdilik işe yarıyor, ancak buna hileli bir çözüm diyoruz ve şu anda ihtiyaç duyabileceği bakımın yanı sıra gelecekte sürdürülebilir olmayabilir.

Testlerin kalitesi adına, çoğu durumda gevşek tip kontrolü kullanıldığından, başlangıçta bu kesinlikle düşüktü.

Daha da derine inersek, 2016'da bu sorunu çözmek için bir Trac bileti açıldı. PHP'deki daha katı tip uyumu göz önüne alındığında, bu bilet geri yüklendi. Bunu azaltmak için birçok çalışma yapılmıştır.

Biz yazarken, yaklaşık 800 örnek var (676 assertEquals(), 96 assertNotEquals() eklendi). 8000'den fazla örneğe rağmen, gevşek tip denetimi kullanmaya devam ediyor.

Kısmen, geriye kalan gevşek tip iddialar, nesneler karşılaştırıldığında meşrudur; kısmen, bunların kesinlikle ele alınması gerekiyor. Ancak, şu anda test hatalarına yol açacaktır. Bu sonuncular, testlerdeki eksikliklerin altını çiziyor, ancak daha nadiren test edilen kodda.

Temaları ve eklentileri test etme

Mevcut eklentilerin yalnızca küçük bir yüzdesi vardır, profesyonelce geliştirilmiş olanlar ve daha popüler olanlar ve yerinde otomatik testler vardır. Genel olarak konuşursak, normal bir WordPress sitesi kesinlikle yaklaşık 19 veya 20 eklenti çalıştırdığından bu endişe vericidir. Oldukça az sayıda site daha da fazla eklentiyle hizmet veriyor! Temalar için otomatik testlerin yapılması daha da nadirdir.

Bu test takımlarının PHP sürüm 8'de çalışmasına izin vermek zordur. Ayrıca eklentilerin ve temaların PHP 8 ile uyumluluğu hakkında bilgi edinilmeden önce.

Ancak, sahip olunan eklentiler/temalar çoğunlukla minimum miktarda PHP 8.0 sorunu beklenebilecek olanlardır. Bunu haykırıyoruz çünkü bu tür temalar/eklentiler profesyonel bir gelişim modeli kullanıyor.

En büyük endişe kaynağı, PHP 8 ile çalışırken sorun olmaya daha meyilli olduklarından, test içermeyen çok sayıda test ve temadır.

Testleri olan temalar ve eklentiler için , esas olarak yerinde olabilecekleri veya olmayabilecekleri iki tür test vardır:

  • Birim testleri . Eklenti kodunun test edilmesine izin vermek için WP'yi "türeten" bağımsız testler. BrainMonkey ve Mockery gibi popüler çerçeveler kullanılır.
  • Entegrasyon testleri . Şimdi, Entegrasyon testleri , test paketini çalıştırmadan önce WordPress'in yüklendiği yerdir ve WPcore kodunu kullanacak ve WP test paketi ile entegre olacaktır.

Entegrasyon testleri

WordPress'in PHPUnit 7.5'e bağlı kalmaya karar verdiğini biliyoruz. Bu ne anlama geliyor?

Temalar ve eklentiler için entegrasyon testleri için bunlar da PHPUnit 7.5'e (maksimum) atlanacak.

Temalar ve eklentiler, entegrasyon testlerinin mükemmel bir şekilde çalışmasını sağlamak için hack'i WP Core'a kopyalamak zorunda kalacaklar veya alternatif olarak, WP Core'daki dosyaları kullanmak zorunda kalacaklar. Ancak, aynı Composer otomatik yükleme oluşturma hack'i kullanılamayacağından özel bir otomatik yükleyici oluşturmaları gerekecek.

PHPUnit yerel dosyalarının yine de yüklenmesinin engellenmesi gerekiyorsa, böyle bir özel otomatik yükleyicinin mutlaka Composer otomatik yükleme dosyasından hemen önce önyüklenmesi gerekecektir.

Birim testleri

Mockery veya BrainMonkey yardımıyla yapılan birim testleri için, PHPUnit 7.x için kullanılabilen Mockery çerçevesi PHP 8.0 ile uyumlu olmadığından PHPUnit > 8 gereklidir. Bu nedenle, bu test takımlarının karşılaştırılabilirliği PHPUnit 5'ten 9'a kadar zorunludur, bu da kesinlikle başka bir zorluk ekler.

Nasıl?

Her iki tür test takımı kullanıldığında, her bir test takımını çalıştırmak için PHPUnit'in farklı sürümleri gerekir. Bu durumu daha da kötüleştirmek için, eklentiler normalde, çalışma zamanı bağımlılıklarının güvenebilecekleri ve PHP 5.6 ile tam uyumlu olan belirli bir sürümde olmasını sağlamak için kararlı bir composer.lock dosyasına sahip olacaktır.

Birim testleri

Belirli zamanlarda, bu son kısım, composer.json dosyasında bir platform php 5.6 tür yapılandırmaya sahip olarak zorlanır. Bu aynı zamanda geliştirici bağımlılıklarının BrainMonkey, Mockery, PHPUnit'in de PHP 5.6 ile uyumlu bir sürümde kilitleneceği anlamına gelir. şimdi, bu kesinlikle PHP 8.0 üzerinde test yapılmasını engelleyecektir.

Composer.lock dosyalarını ve composer.json'u güncellemenin yanı sıra platformu anında kaldırarak bunun üstesinden gelebilirsiniz. Ancak bu, PHP 8.0 üzerinde testlerin çalıştırılmasını geliştiriciler için hem CI hem de yerel olarak daha fazla ilgili hale getirir.

PHP 8 uyumluluğu, büyük WordPress sitelerinde biraz zor görünüyor

Sadece PHP 8'deki bir kırılma değişiklikleri zincirini inceleyerek, bunun, bu bozulmanın nedeni belirsiz olan sitelerde büyük kırılmalara neden olma eğiliminde olduğunu doğrulayabiliriz. Belirli zamanlarda, hata tek bir yerde meydana gelir, ancak farklı bir yerde bir tema veya eklenti tarafından oluşturulur ve bu, kesinlikle bu sorunların hata ayıklamasını oldukça zorlaştıracaktır.

accuwebhosting.com kesinlikle aktif olarak yönetilen bir WordPress sitesidir ve profesyonel geliştiricilerden oluşan özel bir ekip onu desteklemektedir. WordPress sitelerinin büyük çoğunluğunun böyle bir lüksü yoktur ve bu sitelerdeki uyumluluk sorunlarını azaltmak kesinlikle zor olacaktır.

Geliştiricilerin ne kadar süre güncelleme yapması gerekiyor?

PHP'nin her sürümünün yaşam döngüsü 2 yıldır ve bu çağda hatalar giderilmiştir. Güvenlik sorunlarının yamalandığı bir yıl daha eklendi. PHP 7.4 Kasım 2019'da geldi. PHP 7'nin son versiyonuydu. Bu, PHP 7.4'teki hataların Kasım 2021'e kadar düzeltileceği anlamına geliyor. Güvenlik sorunları Kasım 2022'ye kadar yamalanacak. “Ömrünün Sonuna” ulaşacak. o anda.

geliştiricilerin güncellemesi gerekir

Bu nedenle, kesin bitiş tarihi Kasım 2022'dir: tüm PHP kodunun bu zamana kadar PHP 8 ile uyumlu olması gerekir veya potansiyel olarak savunmasız bir PHP sürümüne takılıp kalma tehlikeleri.

Çözüm

PHP 8, çok sayıda kırılma değişikliği içerecektir. Raporumuzda, uzmanlarımızın daha geniş WordPress ekosisteminin yanı sıra WordPress üzerinde daha şiddetli bir etkiye sahip olacağını varsaydığı bu değişikliklerin bir dizisini açıkladık. Bunlar genellikle uyarıların sorun haline gelmesiyle uğraşmak zorundadır. Ve başa çıkması zor olabilecek birkaç hata ortaya çıkıyor. Çalışma zamanında bu değişikliklerin daha yüksek bir yüzdesini tespit edebilirsiniz.

Tüm bu uyumluluk sorunlarını çözmek çok büyük bir iştir. Bunu başarmak için, statik analizden otomatik teste kadar çeşitli stratejiler kullanmanız gerekir. Büyük zaman + çaba gerektirir.

Her şeyi mükemmel bir şekilde yürütmek için araç hakkına sahip olmalısınız. Çeşitli PHP sürümlerini desteklemesi gereken WordPress gibi projeler için, yukarıda tartıştığımız gibi, analiz araçlarının çeşitli sürümleriyle uğraşırken birkaç ekstra karmaşıklık ortaya çıkar.

PHP 5 ve 8 arasındaki çalışma zamanı ve sözdizimsel farklılıkların inanılmaz derecede büyük olması nedeniyle kesinlikle zorlaşıyor.

WordPress'te PHP 8 kullanmak iyi mi değil mi? Aslında tartışma burada değil. Buradaki tek sonuç - bunu yapmak çok zorlaşıyor.

Ayrıca, kapsam konusunu ve WordPress'in PHP bağımlılıklarını da düşündük. Uyumluluğu güvenilir bir şekilde tespit etmek istiyorsanız, yüksek test kapsamının gerekli olduğu ortaya çıkar. Ve PHP 8'den bahsetmişken, uyumluluk sorunlarının sayısı normalden daha fazla olduğu için bu daha da önemlidir. Bunların büyük bir yüzdesi sadece çalışma zamanında tespit edilebilir.

Peki, ne tavsiye ediyoruz?

Sorunlar algılanırsa, WordPress, Tema, Eklenti veya doğrudan PHP uyumluluğu ile ilişkili olup olmadığına bakılmaksızın sorunun kökünü bulmak için kapsamlı hata ayıklama gerekir.

Bağımlılıklar için test kapsamı neredeyse yoktur ve düşüktür. Bu nedenle, gerçek anlamda PHP 8 ile WordPress çekirdek uyumluluğunun ne olduğunu söylemek zor.

PHP 8'in katı yazmaya bu kadar derinden odaklanması nedeniyle, WP'nin güvenli olmayan genişletilebilirlik sistemi sorunlara karşı ekstra savunmasız hale gelir ve potansiyel olarak eklentilerin diğer eklentilerde veya WP'nin kendisinde tür hataları oluşturmasına yol açar.

Geçen ay hata verileri üzerinde bir analiz çalıştırarak bunu teste tabi tuttuk. Büyük bir site olarak, bekleyebileceğimiz türden sorunların güçlü bir göstergesi olabileceğini düşündük. Kesinlikle, PHP 8 ile hatalara dönüşecek birkaç uyarı bulduk.

Burada son bir not vermeyi tercih ederiz. WordPress, mevcut tek eski kod tabanı değildir. Ayrıca, çok çeşitli PHP sürümlerini desteklemeyi hedefleyen tek proje değil. Bu makaledeki bilgiler diğer projeler için de geçerli olabilir.

Accuweb'den bu makalenin birincil amacı, WP'de PHP 8 uyumluluğu ile ilgili zorluklar ve sorunlar hakkında bilgi vermek ve genel bir bakış sunmaktır. Bu amaca mükemmel bir şekilde hizmet ettiğini umuyoruz.