Bilgi PHP 7.4'e Hızlı Bakış Neler Yeni?

Bilgi PHP 7.4'e Hızlı Bakış Neler Yeni?
2
1K

XDinc

Yönetici
XenTR Mod
Customer
SMS Confirmed
Katılım
3 Şub 2019
Mesajlar
2,363
Çözümler
65
Tepki puanı
5,201
Puanları
113
1569057866249.png


Bildiğiniz gibi PHP 7.4 için çalışmalar hala devam ediyor ve bu güne kadar 3 alpha, 3 de beta versiyon yayınlandı. Bugün itibariyle RC versiyonlar da yayınlanacak. PHP 7.4 release tarihi için belirtilen gün 28 Kasım 2019. Bu tarihe kadar toplamda 6 adet RC versiyon planlanmış görünüyor. Zamanlamalarla alakalı detaylı bilgiye şuradan da ulaşabilirsiniz.

Bu konu ele alındığında güncel tablomuz şu şekilde,

1569057639504.png

PHP 7.4
Şimdi PHP 7.4 ile hayatımıza neler girecek bir göz atalım. PHP 7.4 ile gelen yeni özellikleri başlıca olarak şöyle maddelendirebiliriz:
  • Arrow functions
  • Preloading
  • Typed properties (in Classes)
  • Improved type variance
  • Spread operator in Arrays
  • Null assignment operator
  • FFI (for better extension development in PHP)
  • Formatted Numeric Values (Numeric Literal Separator)
Şimdi bu maddeleri kısa kısa inceleyelim, bakalım bizi neler bekliyor!
Arrow Functions
Closure ve Anonymous fonksiyonları PHP’de uzun zamandır kullanıyoruz. Bununla alakalı küçük bir örnek yazalım:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Bu şekilde tek satır olarak kullandığımız, sadece return işlemi yapan fonksiyonları artık Arrow Functions ile şu şekilde kullanabileceğiz:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!


Arrow Functions ile ilgili bilmemizin faydası olacağını düşündüğüm bir kaç bilgiyi de sizinle paylaşayım:
  • Parent scope içerisinde bulunan değişkenlere use anahtar kelimesini kullanmadan direkt olarak Arrow Functions içerisinde erişebiliyoruz.
  • Arrow Functions sadece return işlemi içermeli ve tek bir satırda yazılmalıdır.
Typed Properties (in Classes)
Bu özellik ile artık sınıflar içerisinde tanımladığımız değişkenlere (class variables) tür tanımlaması yapabileceğiz.
Şöyle ki:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!


Burada bazı özel hususlar mevcut. Örneğin; public olarak tanımlanmış bir sınıf değişkenine, herhangi bir yerden erişmemiz mümkün. Ama eğer bu değişkene bir tür tanımlaması yaptıysak ve bu değişken için bir initialize (değer tanımlaması diyebiliriz) yapmadıysak; değişkene erişmeye çalışırken şuna benzer bir hata alacağız:
Fatal error: Uncaught Error: Typed property Foo::$bar must not be accessed before initialization
Bunun gibi Typed Properties ile gelen bir kaç özel durum daha var. Bu durumlara göz atmak ve Typed Properties için hangi türlerin kullanılabilir olduğunu öğrenmek için buradaki bağlantıdan konu hakkında yazılmış güzel bir yazıya göz atabilirsiniz. Ayrıca şuradan da RFC’ye göz atmanız mümkün.

Improved Type Variance
PHP 7 ile birlikte yazdığımız fonksiyonlar dönüş tipi belirtebileceğimiz bir özellik geldi. Güzel de oldu. Bu özellik ile belli veri tipleri için dönüş tipleri (return types) belirtebiliyorduk.
PHP 7.4 ile bu olay biraz daha geliştirilmiş ve artık covariant dönüş tipi de kullanabileceğiz.
Örneklendirecek olursak:


Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!


Buna ek olarak covariant tiplerin kullanımı sadece dönüş tipleri için değil, fonksiyon parametre tipleri için de kullanılabilecek. Şöyle ki:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Bu geliştirme ile alakalı RFC bağlantısını kontrol edebilirsiniz.


Null Assignment Operator

Biliyorsunuz PHP 7 ile birlikte hayatımıza null operatörü girmişti. Şu şekilde bir kullanım yapabiliyorduk:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Artık bu gibi işlemleri yeni eklenecek Null Assignment Operator ile şu şekilde çok daha kısa yapabileceğiz:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Nasıl? Bence yerinde bir geliştirme olmuş.

Array Spread Operator
Spread operatörünü (…) fonksiyon parametrelerinde kullanabiliyorduk. Artık bu operatör direkt olarak diziler içerisinde de kullanıma uygun hale getirilmiş.
Güzel de olmuş. Şöyle bir örnek görelim:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!


Burada dikkat etmemiz gereken bir husus var o da; bu işlemi sadece numeric index key’lere sahip diziler ile yapabiliyor olmamız. Bu da aklınızda bulunsun. Belki ilerleyen zamanlarda tüm key’ler için işlem yapabileceğimiz geliştirmeler yapılabilir.
Bu yeniliğin RFC bağlantısını da göz atmanızı tavsiye ederiz.


Numeric Literal Separator
PHP 7.4 ile birlikte alt tire (underscore) karakteri ile birlikte uzun numeric ifadeleri daha görsel yazabilmek mümkün olacak.
Şöyle bir örnek verelim:

Kod:
Dear Guests, welcome! Please, Giriş Yap or Kayıt Ol to view hide content!

Bu geliştirmenin RFC bağlantısını da incelemenizde fayda var.

Foreign Function Interface (FFI)

Bu özellik ile bazı core-level özellikleri kullanmak istediğimizde kendi kodumuz üzerinden C kodunu çağırma imkanı bulabileceğiz. Özetle; PHP ile bir PHP extension yazabilecek ve bunu kullanabileceğiz. Bunun için yine de C bilgisi gerekecek çünkü bu tarz bir geliştirmenin hala karışık ve zorlu tarafları var. Sonuçta core-level’da işlem yapacağız ve bu beraberinde C bilgisini gerektirecek.

Bu özellik için de bir RFC bağlantısı mevcut. İsterseniz detaylı olarak bir inceleme yapabilirsiniz.
Bu konu çok fazla araştırma veya deneme fırsatı bulduğum bir konu değil maalesef, elimden geldiğince temel bilgi vermeye çalışıyorum. Bu nedenle, bu konu hakkında detaylı bilgisi olan veya kaynak paylaşabilecek kişiler bana ulaşabilirse, yazının bu kısmını güncelleyip daha detaylı ve doğru bilgi verebiliriz diye düşünüyorum.

Preloading

Bu özellikte bir başka core-level özellik. Ve sanırım benim en dikkatimi çeken ve hoşuma giden özelliklerin başında bu geliyor. Bu özellik ile birlikte PHP ile yazdığımız uygulamalarda ciddi performans artışları söz konusu olabilir.

Şimdi bu olayı kısaca ele alalım: PHP ile bir web uygulaması yazdığımızı düşünelim. Bunun için herhangi bir frameworkü kullanıyoruz veya kendimizce bir yapı oluşturmuş ve bunu kullanıyoruz. Server’a gelecek her request için uygulamanızda bulunan gerekli dosyaların sürekli olarak yüklenmesi gerekecek. Bu dosyaları sizin uygulamanızın core dosyaları olarak düşünebilirsiniz. Yani uygulama çalışırken kesinlikle yüklenmesi gereken dosyalar. Çekirdek sınıflar, fonksiyonlar, config dosyaları vs… Tüm bu dosyalar her gelen request için bir daha, bir daha yüklenecek. İşte burada devreye Preloading giriyor!

Preloading, sunucunun en başta istediğiniz dosyaları belleğe almasını ve gelen her request için bu dosyaları direkt olarak bellekten kullanması sağlıyor. Böylece her request için dosyaların tekrar tekrar yüklenmesini beklemek zorunda kalmıyor ve buradan önemli bir performans artışı elde edebiliyoruz.
Burada dikkat edilmesi gereken bir husus var.

Eğer Preloading yapmış olduğunuz dosyaların kaynağı veya içeriği değişirse, sunucunun yeniden başlatılması gerekiyor. Daha sonrasında dosyalar yeni halleriyle tekrar belleğe alınabilir.

Bu konu ile alakalı şu yazıyı okuyarak daha detaylı bilgi sahibi olabilirsiniz. RFC’yi incelemek isteyenleri de şöyle alabiliriz.
Bu yazmış olduğum maddelerin yanı sıra gelen bazı yeni özellikler ve metotlar var. Bunların yanı sıra artık desteklenmeyecek ve deprecated olan şeylerde var. Ben en önemli gördüğüm özelliklere kısaca değinmek istediğim için bu detaylara değinmedim ama siz aşağıdaki bağlantı üzerinden benim bu yazıyı yazarken faydalandığım ve çok daha fazla detay bulunan yazıyı okuyabilirisiniz.
Kısaca ve dilim, elim döndüğünce PHP 7.4 ile gelen yeni özellikleri aktarmaya çalıştım.
Eminim yanlışlarım veya eksiklerim olmuştur. Bu tarz şeyler gördüğünüzde, beni hemen uyarırsanız memnun olurum. Birlikte daha doğru, daha iyi bilgiyi bir araya getirebiliriz! Şimdiden teşekkürler.
 
Php sürümü güncel olmayınca, gönderiler yenilenmiyor. :)
 
Quick Jump
2,620Konular
12,449Mesajlar
1,428Kullanıcılar
Geri
Üst