⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
Server ip : 95.173.173.2 || Ts3 : LCAPRO www.lcapro.net
Sponsor Görsel 2
SponsorSponsor

PHP 7.4 Çıktı

Konu

#1
PHP 7.4 ile gelen yeni özellikler
  • 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

Arrow Functions
Closure ve Anonymous fonksiyonları PHP’de uzun zamandır kullanıyoruz. Bununla alakalı küçük bir örnek yazalım:




PHP Kod:
array_map(function (User $user) { 
    return $user->id
}, 
$users
Bu şekilde tek satır olarak kullandığımız, sadece return işlemi yapan fonksiyonları artık Arrow Functions ile şu şekilde kullanabileceğiz:


PHP Kod:
array_map(fn (User $user) => $user->id$users
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 [b]use[/b] anahtar kelimesini kullanmadan direkt olarak Arrow Functions içerisinde erişebiliyoruz.

  • Arrow Functions [b]sadece return işlemi[/b] 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:



PHP Kod:
class A
{
    public string $name;
    
    
public ?Foo $foo;

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:

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:




PHP Kod:
class ParentType {}
class 
ChildType extends ParentType {}

class 
A
{
    public function covariantReturnTypes(): ParentType
    
/* … */ }
}

class 
extends A
{
    public function covariantReturnTypes(): ChildType
    
/* … */ }

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:


PHP Kod:
class A
{
    public function contraVariantArguments(ChildType $type)
    /* … */ }
}

class 
extends A
{
    public function contraVariantArguments(ParentType $type)
    /* … */ }


Null Assignment Operator

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



PHP Kod:
$data['date'] = $data['date'] ?? new DateTime(); 
Artık bu gibi işlemleri yeni eklenecek Null Assignment Operator ile şu şekilde çok daha kısa yapabileceğiz:


Kod:
$data[‘date’] ??= new DateTime();

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:
$arrayA = [1, 2, 3];

$arrayB = [4, 5];

$result = [0, ...$arrayA, ...$arrayB, 6 ,7];

// [0, 1, 2, 3, 4, 5, 6, 7]

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:
$unformattedNumber = 107925284.88;

$formattedNumber = 107_925_284.88;

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 [b]RFC bağlantısı[/b] 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
Ş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!
Cevapla
#2
Teşekkürler
Linksta
Cevapla
#3
(28-02-2020, 12:04)By.KinG Adlı Kullanıcıdan Alıntı: Teşekkürler

Rica ederim.
Cevapla
#4
Teşekkürler
Cevapla
#5
(06-03-2020, 14:02)ITenGriTR Adlı Kullanıcıdan Alıntı: Teşekkürler

Rica ederim
Cevapla
#6
Elinize Sağlık
Cevapla
#7
Teşekkürler
stywashere
Cevapla
#8
@"JesusWGlasses" @SkullHD Rica ederim.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da