PHP 8 güncellemesi ile yeni adlandırmalar yapılmış argümanların, birleştirme türlerinin, yapıcı özellik tanıtımlarının, özniteliklerin, eşleşme ifadelerinin JIT sistemindeki iyileştirmelerin, hata işleme ve tutarlılık özelliklerine ve optimizasyonuna sahip olabilirsiniz.
PHP 8 versiyonu, 26 Kasım 2020 tarihinde resmi olarak kullanıcının hizmetine sunuldu. Büyük bir yenilikle kullanıma sunulan söz konusu versiyon, birçok güçlü özelliği de beraberinde getiriyor. Bu yeni özellikler sayesinde çok daha kolay bir şekilde kod yazabilirsiniz. Ayrıca daha kullanışlı ve güçlü uygulamalar oluşturabilirsiniz. PHP 8’in kullanıcılar tarafından en beğenilen özelliği Just in Time kavramının kısaltması olan JIT derleyicisidir. Peki, JIT kavramı ne demektir?
JIT Nedir?
JIT, OPcache’in neredeyse bağımsız bir parçası olarak uygulanan bir işlev mekanizmasıdır. Bu özellik ile PHP derlemeleri etkinleştirilip devre dışı bırakılabilir. Derlemeler etkinleştirildiğinde dosyaların yerel kodu OPcache belleğinde saklanır.
Peki, JIT ile OPcache arasındaki farklar nelerdir?
PHP için JIT’in ifade ettiği anlamı doğru analiz etmek için öncelikle PHP’nin kaynak kodunda sistemin nasıl çalıştığına bir göz atmak gerekir. PHP, 4 aşamalı yürüyen bir süreçtir. Aşağıda bu aşamaların neler olduğunu görebilirsiniz.
Lexing/Tokenizing: PHP’nin ilk aşaması olan lexing sürecinde PHP kodu okunur. Bu kapsamda bir dizi belirteçler oluşturulur.
Ayrıştırma: PHP’nin bu aşamasında komut dosyalarının sözdizimleri ile eşleşip eşleşmediği kontrol edilir. Bu aşamada soyut bir sözdizimi ağacı olan AST için çeşitli belirteçler kullanılır.
Derleme: Bu aşamada yorumlayıcıdan geçen AST düğümleri, Zend VM tarafından geçirilerek komut türü belirlenir. Sayısal tanımlayıcılar düşük seviyedeki Zend Opcodes’e dönüştürülür.
Yorumlama: Opcodes yorumlanarak, Zend VM üzerinden çalıştırılır.
OPcache’in PHP Hızına Etkisi
PHP, yorumlanmış bir dil demektir. Bir PHP çalıştırıldığında yorumlayıcı, kodu tekrar tekrar çalıştırır. Bu durum, CPU kaynaklarının etkin kullanılmamasına neden olduğu gibi zamanın da etkin kullanılmaması demektir.
OPcache, önceden derlenmiş komut dosyasının bayt kodunu bellekte depolar. Bu sayede PHP’nin performansını artırır. Böylece PHP’nin her istekten sonra komut dosyalarını yükleme ve ayrıştırma ihtiyacının ortadan kalkması sağlanır.
OPcache etkin haldeyken PHP yorumlayıcısı yukarıda da belirtilmiş olan 4 aşamalı işlemden geçer. Fakat komut dosyaları ilk defa çalıştırılır. Zend VM’de ise derhal çalıştırılabilir.
Named Arguments
“Named Arguments” teriminin Türkçe karşılığı, “Adlandırılmış Değişkenler” olarak ifade edilir. Phyton programlama dilinde kullanılan adlandırılmış değişkenler, PHP 8 versiyonu ile çok rahat bir şekilde kullanılabilir. Yeni versiyonun sağladığı çok önemli avantajlardan biri named arguments kullanımının etkin olarak gerçekleştirilmesidir. Named Arguents özelliği ile parametrelerin fonksiyonlara belirli bir sıra ile gönderilme zorunluluğu ortadan kalkar. Bu sayede kodun okunurluğu artarak geliştiricinin işi de kolaylaşır.
Attributes
Türkçe karşılığı “özellikler” olan attributes ile eski tip doc bloklarını birbirinden ayrılma zorunluluğu ortadan kalkar. Bu sayede sistem meta verilerinin eklenmesine izin verir.
PHP’nin eski versiyonlarında sadece string kanalındaki yorum bloklarına izin verilir. PHP 8 versiyonundaki attributes özelliği ile diğer kanalların yorumları da kullanılabilir.
Kurucularda Özellik Tanımları
Başlıktaki özellik ile sistem üzerinde daha anlaşılır kodların kullanılmasına imkân tanınır. PHP 8 içerisinde oluşturulan sınıfların özelliklerini doğrudan başlangıç değerine atayabilirsiniz.
Önceki versiyonlarda özellik tanımlamaları class’ın ilk aşamasında yapılırdı. Bu aşamada başlangıç değeri ataması yapılacaksa yine kurucu içerisinde yapılması gerekirdi. PHP 8’de ise eski kodlarınızı hiç değiştirmeden bırakabilirsiniz. Yeni kodlarınız ile sistemi kullanmaya devam edebilirsiniz.
Birleşik Değişken Tiplerinin Eklenmesi
Birleşik değişken tiplerinin eklenmesi de işleri çok kolaylaştıran bir özelliktir. Birden fazla tipe sahip olan değişkenler doğal birleşik değişkenlerle yapılabilir.
Match İfadesinin Kullanımı
Her ne kadar yukarıdakiler kadar büyük bir gelişme olmasa da PHP 8, match ifadesinin kullanımını da sağlar. Yeni match ifadesi ile sistemde swich özelliğine çok benzeyen bir yapı karşınıza çıkar.
- Match ifadesi ile sunucu, bir değişken içerisinde saklanabilir.
- Match ifadesi, tek satırlık ifadeleri destekler. Sistemin kullanılması için break kullanımına ihtiyaç duyulmaz.
- Match, strict türünde bir karşılaştırma yapar.
Nullsafe Operatörünün Kullanımı
Nullsafe operatörünün kullanılması ile kod yığınları ortadan kaldırılabilir. Null operatörünü bir zincir olarak kullanabilirsiniz. Zincirin bir noktasında Null değeri dönerken başlangıcında da Null yer alır.
Metin ve Sayı Karşılaştırmaları
PHP’nin eski versiyonunda metin ve sayı değerlerinin karşılaştırılması esnasında metin değerleri sayı değerine çevrilirdi. Karşılaştırma ise iki sayı değeri arasında yapılırdı. Bu durumda metin değerinin gerçekte sayı ifade etmemesinden dolayı bir kısım hatalara neden olurdu.
PHP 8 versiyonunda ise gerçekten sayı değeri ifade etmeyen metinlerin çevirisi yapılmaz. Bunun yerine sayı değerleri metin türüne dönüştürülerek iki metnin aynı olup olmadığı kontrol edilir.
Güncel Versiyondan Elde Edilen Sonuç
PHP8, kullanıcıların işini kolaylaştıracak birçok özelliği ihtiva ediyor. Söz konusu özelliklerin başında kodun okunabilir ve anlaşılır şekilde yazılması yer alıyor. Bunların yanında da yeni versiyon ile birçok özelliğin sisteme dahil edildiğini görebilirsiniz.
PHP 8 kullanmak için bazı durumları da göz önünde bulundurmanız gerekiyor:
- Eğer paylaşımlı sunucu kullanıyorsanız, servis sağlayıcınız tarafından verilen hizmetin PHP 8 özelliği ile sunulmasını beklemek zorunda kalabilirsiniz.
- Eski versiyonlarda kullanılan eklentileriniz varsa, yeni sürüm için bu eklentilerin güncellemelerini beklemeniz gerekebilir.
PHP programcılığının 8.0 versiyonu ile kod yazma işlemleriniz kolaylaşır ve kısa sürede sonuca ulaşabilirsiniz. Tüm bu özellikler göz önünde bulundurulduğunda PHP 8.0, kullanmaya değer bir programlama dilidir.
Bu içeriği paylaşın: