Kategoriler
Kodlama

2023’de PHP

Yıl 2023, PHP öldü mü?

90’lı yılların ortalarında kişisel bir proje olarak mütevazı başlangıcından itibaren PHP, küçük bloglardan büyük kurumsal uygulamalara kadar her şeye güç vererek web geliştirme için en popüler dillerden biri haline geldi.

Neredeyse otuz yıl boyunca şaşırtıcı bir dönüşüm geçiren bir dildir. Son 10 yıl içinde bile PHP hayal bile edemeyeceğimiz şekilde dönüştü.

Her yıl, PHP’nin mevcut durumu hakkında geçmişe ve geleceğe baktığım bir yazı yazıyorum. Hadi başlayalım!

The PHP Foundation / PHP Vakfı

Nikita’nın görevi bırakması beni biraz endişelendiriyor. PHP’nin çekirdeği üzerinde çalışabilecek tek kişi kesinlikle o değil, ancak geçtiğimiz yıllarda PHP 8.0 ve 8.1 ile muazzam miktarda iş yaptı. Umarım PHP Vakfı yakında hızlanır ve gelecek yıl PHP üzerinde çalışmak için zamanı olan yeterli sayıda çekirdek geliştirici olur. Henüz çok fazla RFC taslağı olmamasına rağmen PHP 8.2 halihazırda geliştirme aşamasında.

2022’nin PHP için akıllara durgunluk veren bir yıl olacağını sanmıyorum, daha ziyade istikrarın arttığı bir yıl olacak. Bunda yanlış bir şey yok.

https://stitcher.io/blog/php-in-2022

Vakfın bunu başardığını söylemek doğru olur. Kısa süre önce 2022 raporlarını yayınladılar ve oldukça etkileyici rakamlar gösteriyorlar:

  • 2022 yılında toplam 580.000 dolar toplanmış
  • Vakıf, PHP üzerinde çalışmaları için 6 geliştiriciye ödeme yapıyor
  • Vakıf üyeleri php-src’deki tüm değişikliklerin neredeyse yarısını yaptı
  • 8 yeni RFC oluşturdular, bu RFC’lerden sadece biri kabul edilmedi

Vakfın uzun zamandır PHP’nin başına gelen en iyi şeylerden biri olduğunu düşünüyorum ve umarım 2023’te dili daha da geliştirebilirler. PHP kullanan bir şirkette çalışıyorsanız, bağış yapmayı düşünmenizi şiddetle tavsiye ederim.

PHP 8.2

PHP 8.2’ye geçiyoruz. Genellikle daha küçük bir sürüm olarak kabul edilir, ancak yine de bir dizi güzel özelliği vardır. Sadece bir çift isim vermek için:

Salt okunur sınıflar:

readonly class PostData
{
    public function __construct(
        public string $title,
        public string $author,
        public string $body,
        public DateTimeImmutable $createdAt,
        public PostState $state,
    ){}
}

Yepyeni bir randomizer:

$rng = $is_production
    ? new Random\Engine\Secure()
    : new Random\Engine\Mt19937(1234);
 
$randomizer = new Random\Randomizer($rng);

$randomizer->shuffleString('foobar');

Standalone null, true and false:

function alwaysFalse(): false
{
    return false;
}

Ayırıcı normal form türleri:

function generateSlug((HasTitle&HasId)|null $post) 
{/* … */}

Düzeltilmiş parametreler:

function connect(
    string $user,
    #[\SensitiveParameter] string $password
){
    // …
}

Ve daha fazlası.

PHP’nin yıllar içinde ne kadar geliştiğini anlamak biraz çılgınca. Brent, farkı açıkça gösteren küçük bir video karşılaştırması yaptı:

The evolution of PHP

Ekosistem

Her yıl olduğu gibi, PHP’nin paket yöneticisi Packagist’ten bahsetmeliyim, şimdi 361.000 paket listeliyor; Geçen yıldan 60.000 daha fazla:

Etkileyici bir rakam, toplam kurulum miktarıdır.

Bu arada, Packagist kısa bir süre önce 50 milyardan fazla yükleme gerçekleştirme kilometre taşını geçti. Tebrikler Packagist!

Az önce kontrol ettim ve şu anda 74.492.061.634 yüklemeye ulaştık. Bu, bir yılda 24 milyar kurulum, ayda 2 milyar kurulum artışı demek. Bunların hepsi söylenecek şeyler: PHP ekosistemi çok büyüyor.

Yılda iki kez sürüm istatistikleri yazımı yayınlıyorum. Bu gönderilerde, Packagist’in verilerine dayanarak topluluk genelinde PHP sürüm kullanımını analiz ediyorum. Yine o gönderiden bir grafik paylaşmak istedim: 2013 ile günümüz arasındaki zaman çizelgesi, sürüm başına kullanım geçmişini gösteriyor.

PHP 8.* kullanımının hızla arttığını görmek harika olsa da, hala eski, yavaş ve güvenli olmayan PHP sürümlerine takılıp kalmış büyük bir insan kitlesi var. 2023 için umudum, eski sürüm numaralarının daha da hızlı düştüğünü görmek. Sürüm istatistikleri gönderimde şöyle:

Bu veriler, PHP topluluğu içindeki bölünmeyi güzel bir şekilde görselleştiriyor: bir kısım modern PHP’ye ayak uydururken, bir kısım çaresizce geride kalıyor.

Yükseltmelerden bahsetmişken, özellikle bir araçtan bahsetmek istiyorum: Rector. Rector, PHP kod tabanınızı yükseltmenize yardımcı olan ücretsiz bir otomasyon aracıdır. Tek gereken çok az miktarda bir yapılandırmadır ve sizin için çok büyük miktarda iş yapar.

Geçenlerde topluluk odaklı içerik toplayıcım Aggregate’i PHP 8.2’ye güncellemek için kullandım ve gerçekten eğlenceli ve kullanımı kolaydı.

Sürüm istatistikleri gönderimi yayınladıktan sonra, birkaç kişi bana henüz güncelleme yapmadıklarını ve PHP 7.*’de takılıp kaldıklarını söyleyince onlara bunun nedenini sordum. Bana bunun çok fazla el işi olduğunu söylediler. İlginçtir ki, hiç kimse onlara yardım etmek için Rektör gibi araçları kullanmaya çalışmamıştı bile…

Bir “programlama dilinin” bir derleyiciden çok daha fazlası olduğuna kesinlikle inanıyorum: “programlama dilinin” tanımlanmasında eşit rol oynayan araçlar ve ekosistemdir ve gerçekten birçok insan, proje ve işletmenin fayda sağlayacağını düşünüyorum. Rector gibi otomasyon araçlarını kullanmayı inceledi.

Ekosistemden bahsettiğim için PHP’nin en büyük iki çatısından bahsetmeden geçemeyeceğim: Laravel ve Symfony.

Geçtiğimiz yıllarda Laravel muazzam bir şekilde büyüdü. Artık çerçeve ve ekosistemi üzerinde çalışmak için 8 tam zamanlı geliştirici istihdam ediyorlar. Bunun da ötesinde, JetBrains’in geliştirici anketi, PHP geliştiricilerinin %67’sinin Laravel ile çalıştığını bildiriyor.

Symfony bir çerçeve olarak bugünlerde Laravel’e kıyasla daha az popüler olsa da, hâlâ PHP topluluğu içindeki en olgun ve kararlı çerçevelerden biridir. Daha çok kurumsal uygulama geliştirme için kullanılır, ancak bağımsız bileşenleri tüm PHP ekosisteminde popülerdir – Laravel’in ayrıca Symfony bileşenlerine birkaç bağımlılığı vardır. Bir avuçtan fazla Symfony paketinin Packagist’in en iyi paket listesine girmesi şaşırtıcı değil.

WordPress’ten de bahsetmeliyim. Dürüst olacağım, onunla bir aşk/nefret ilişkim var. Bir kullanıcı olarak WordPress harikadır. Kurulumu ve kullanımı çok kolay ve bence popülaritesinin her parçasını yıllar içinde kazandı. Yine de bir geliştirici olarak, WordPress beni üzüyor. Modern ve güvenli PHP sürümleriyle güncel kalamama, tüm PHP topluluğuna gölge düşürür.

Şu anda, WordPress yalnızca PHP 8.0 için beta desteğine sahiptir. Açık olmak gerekirse: PHP 8.0 2020’de piyasaya sürüldü ve üç yıl sonra artık ömrünün sonuna geldi — ve WordPress henüz bunu desteklemiyor…

Tabii ki, daha yeni PHP sürümlerini düzgün bir şekilde desteklememek için sebepler var. İyi olup olmadıklarına karar vermek size kalmış. Kişisel görüşüm, WordPress kadar geriye dönük uyumluluk kararının çoğunlukla iş odaklı olduğu: WordPress’in büyük bir kısmı ticari kısımdır ve müşteri tabanlarının büyük bir kısmı eski PHP sürümlerini çalıştırmaktadır. Bu, her iki tarafın da birbirini ve bir ölçüde PHP topluluğunu bir bütün olarak geride tuttuğu bir kısır döngüdür.

Öte yandan, neredeyse 20 yıl sonra pek çok yazılım projesinin WordPress kadar popüler ve alakalı kalamayacağı gerçeğini kabul etmeliyiz, bu yüzden belki de geriye dönük uyumluluk konusundaki stratejileri doğru olanıdır?

Dipnotlar

Yazı https://stitcher.io/blog/php-in-2023 adresinden Türkçeye çevrilmiştir.