PHP 8 ile Gelen Özellikler

PHP 8 sürümü ile bu dilde olmayan pek çok önemli özellik eklenmiş oldu. Bunlardan bazılarını aşağıda listeledim.

Union Types – Birleşik tipler

Bir fonksiyonun dönen değerin ya da aldığı parametrenin tipi tanımlarken yani type casting yaparken artık bir kaç değeri birleştirebiliriz.

// aşağıdaki fonksiyon koşula göre false ya da bir float dönebilir
function bol($bolunen, $bolen) :float|false {
	if($bolen === 0) {
		return false;
	} else {
		return $bolunen / $bolen;
	}
}
Named Arguments – Adlandırılmış Değişkenler

Bir fonksiyon kullanılırken verilecek parametreleri adına göre eşitleyerek verebiliriz. Yukarıdaki örnek için uygulayacak olursak;

// yukarıdaki bol fonksiyonumuzu aşağıdaki iki türlü de 
// kullanabiliriz. 

var_dump (bol(bolunen: 5, bolen: 2)); // float(2.5)
var_dump (bol(bolen: 2, bolunen: 16)); // float(8)
Constructor Property Promotion – Kurucu fonksiyonda Özellik tanımlama

Bir sınıfın kurucu fonksiyonunda (__construct) verilen parametreleri artık direkt olarak o sınıfın bir özelliği olarak kullanabiliriz.

class Dikdortgen {
	public function __construct(
		public int $kenar1,
		public int $kenar2,
		) {
	}
	
	public function alan() {
		// yukarıda tanımladığımız iki değikeni burada $this-> şklinde kullanabiliriz.
		return $this->kenar1 * $this->kenar2;
	}
}

$sekil = new Dikdortgen(5, 8);

echo $sekil->alan(); // 40
Match İfadesi

Yeni eklenen bu ifade ise daha kısa switch..case ifadeleri yazmamamıza olan imkan tanıyor. Switch’ten farkı ise bir değer dönmesi ve break anahtarına ihtiyaç duymaması.

$gun = 'Salı';
$gunKisa = match ($gun) {
  'Pazartesi' => "Pzt",
  'Salı' => "Sal",
  'Çarşamba' => "Çar",
};

var_dump($gunKisa); // string(3) "Sal"
Nullsafe Operatörü

Bir sınıf örneğinin elemanlarına erişirken bu değeri null olup olmadığını kontrol etmek için bir if yazmamıza gerek kalmıyor, aşağıdaki örnekte olduğu gibi zincire eklenecek soru işareti ile bu kontrolü yapabiliriz.

// Bir kullanıcı değişkenimiz olsun
// Çağrılan adres metodu eğer $kullanıcı değeri null ise
// direkt null dönecek ve zinciri devam ettirmeyecektir.
// Aynı şekilde adres metodunun döndüğü değer null ise
// sehir elemanını çekmeye çalışmak yerine zincir durdurulup
// null döndürülecektir.

$kullanici?->adres()?->sehir;

Belli bir kaç özelliği kısaca örneklendirmeye çalıştım. Bunlar dışında Just-in-Time derlemesi, Attributes gibi pek çok yeni özellik ile PHP gelişmesine devam ediyor.


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir