PHP 8.0 Yayınlandı. PHP 8.0 İle Gelen Yenilikler Nelerdir?

PHP 8.0 Yayınlandı. PHP 8.0 İle Gelen Yenilikler Nelerdir?

PHP 8.0 son yıllarda gelen ön köklü güncelleme olmuşa benziyor. Öyle ki ilk bakışta anlaşılan, diğer yazılım dillerinde bulunan ancak PHP'de bulunmaya birçok özellik ve kolaylık artık PHP için de kullanılabilir hale geliyor. Sizler için PHP 8.0'ın bazı büyük yeniliklerini derledik.


İsimlendirilebilir Parametreler (Named Arguments)

Bu özellik gelişine bizim de en çok sevindiklerimizden biri olsa gerek. Artık bir metodun yalnızca istediğimiz parametrelerini belirtip, opsiyonel olanları atlayabiliyoruz. Böylelikle parametreler artık sırdan bağımsız hale geliyor.

PHP 7

ornek_fonksyon($string, 99, array(), true);

PHP 8

ornek_fonksyon($string, dont_encode: true);


Yapıcı Değişkenlerin Tanımlanması (Constructor property promotion)

Artık sınıfların yapıcı değişkenlerini yapıcı metodlarda tek tek atamamıza gerek kalmıyor. Yeni özellik olarak yapıcı metodların parametrelerinde yapıcı değişkenleri tanımlayabiliyoruz.

PHP7

class Koordinat {
  public float $x;
  public float $y;
  public float $z;

  public function __construct(
    float $x = 0.0,
    float $y = 0.0,
    float $z = 0.0,
  ) {
    $this->x = $x;
    $this->y = $y;
    $this->z = $z;
  }
}

PHP 8

class Koordinat {
    public function __construct(
        public float $a = 0.0,
        public float $b = 0.0,
        public float $c = 0.0,
    ){}
}


Birleşim Çeşitleri (Union Types)

Artık veri tipi kombinasyonu içeren bir değişkenin çeşidini öğrenmek için dökümantasyona başvurmak yerine, çalışma zamanında doğrulanabilen yerel veri birleşim türlerini kullanabiliyoruz.

PHP 7

class SayiSinif {
    /** @var int|float */
    private $number;
  
    /**
     * @param float|int $number
     */
    public function __construct($number) {
      $this->number = $number;
    }
  }
  
  new SayiSinif('NaN');

PHP 8

class SayiSinif  {
    public function __construct(
      private int|float $number
    ) {}
}
  
new SayiSinif('NaN'); // Hata



Yeni Eşleşme İfadesi (Match Expression)

PHP 8.0 ile birlikte gelen ve yapısal olarak -switch- ifadesine benzeyen yeni bir eşleşme ifadesi ile kısa durum belirlemeleri daha da kolaylaşacağa benziyor. Bu yeni ifade ile eşleşmenin sonucu bir değişkene atanabiliyor yahut döndürülebiliyor. Eşleşme ifadesi yalnızca tek satır ifadeleri destekliyor ve artık -break- beyanına gerek kalmıyor.


PHP 7

switch (8.0) {
    case '8.0':
        $sonuc = "Malesef!";
        break;
    case 8.0:
        $sonuc = "Eşleşme Doğrulandı";
        break;
    }
echo $sonuc;
//> Malesef!!

PHP 8

echo match (8.0) {
    '8.0' => "Malesef!",
    8.0 => "Eşleşme Doğrulandı",
};
//> Eşleşme Doğrulandı


Nullsafe Operatörü (Nullsafe Operator)

Bize göre, gelen yenilikler arasında en etkili olacaklardan bir tanesi de bu nullsafe operatörü olacaktır. bir verinin var olup olmadığının kontrolünü -if- durumu ile yapmak yerine, artık zincirin halkalarının arasına eklenecek -?- ile değişkeni tek seferde belirtebiliyoruz. Zincirin halkalarından bir tanesinin boş olması durumunda işlemin yürütülmesi durduruluyor.

PHP 7

$ulke =  null;

if ($oturum !== null) {
  $kullanici = $oturum->kullanici;

  if ($kullanici !== null) {
    $adres = $kullanici->AdresiAl();
 
    if ($adres !== null) {
        $ulke = $adres->ulke;
    }
  }
}

PHP 8

$ulke = $oturum?->kullanici?->AdresiAl()?->ulke;


Dahili işlemler İçin Tutarlı Hatalar

Dahili metodların çoğu, parametrelerin doğrulanması başarısız olduğunda artık daha tutarlı hatalar veriyor.

PHP 7

strlen([]); 
// Warning: strlen() expects 
// parameter 1 to be string, 
// array given

array_chunk([], -1); 
// Warning: array_chunk(): 
// Size parameter expected 
// to be greater than 0

PHP 8

strlen([]); 
// TypeError: strlen():
// Argument #1 ($str) must be 
// of type string, array given

array_chunk([], -1); 
// ValueError: array_chunk(): 
// Argument #2 ($length) must be 
// greater than 0






Bu makalenin uzunluğu 341 kelimedir.

Bu makale 2020-11-27 tarihinde yayınlanmıştır.

Kategori: Web Yazılım

Görüş, Öneri ve Sorularınız için Bize Yazın

Görüş veya önerilerinizi almak, Aklınıza takılanları veya sormak istediklerinizi cevaplamak bizim için en önemli değerdir.

Projeleriniz için Hızlı Fiyat Teklifi Alın

Aklınızdan geçen projeyi veya yapılmasını istediğiniz işi bize anlatırsanız, sürecin nasıl işleyeceği ve projenizin net fiyatlandırması hakkında sizi bilgilendirmekten memnuniyet duyarız. Bilmenizi isteriz ki, yürüttüğümüz projelerde
üstün tasarım ve profesyonelliği her zaman birinci planda tutmaktayız.