Typed Properties Nedir?
PHP 7.4 ile birlikte gelen typed properties, sınıf özelliklerine tür belirleme (type hinting) imkanı sunar. Önceki PHP sürümlerinde yalnızca fonksiyon parametrelerine ve dönüş değerlerine tür belirlemek mümkünken, PHP 7.4 ile birlikte bu özellikler sınıf değişkenlerine de uygulanabilir hale gelmiştir. Böylece geliştiriciler, değişkenlerin yalnızca belirli türdeki verileri almasını sağlayarak daha güvenli ve hatasız bir kod yazımını teşvik eder.
Typed Properties Kullanımı
Typed properties kullanımı, PHP’nin OOP (Nesne Yönelimli Programlama) modeline dayanır. Aşağıda typed properties kullanımına dair temel örnekler ve açıklamalar yer almaktadır.
“`php
class Kullanici {
public string $isim;
public int $yas;
public function __construct(string $isim, int $yas) {
$this->isim = $isim;
$this->yas = $yas;
}
}
“`
Yukarıdaki örnekte, `Kullanici` adında bir sınıf tanımlanmıştır. `isim` ve `yas` adında iki özellik bulunmaktadır ve bu özelliklere `string` ve `int` tür belirlemesi yapılmıştır. Bu tür belirlemeleri sayesinde, bu özelliklere farklı bir türde veri atanması durumunda bir hata meydana gelir.
Hata Yönetimi
Typed properties kullanırken, belirtilen türle uyuşmayan bir değer ile karşılaşıldığında bir TypeError hata mesajı alınır. Bu durum, uygulamanın güvenliğini artırır ve hataları daha erken aşamada tespit etmeyi sağlar.
“`php
try {
$kullanici = new Kullanici(“Ahmet”, 25);
$kullanici->isim = 123; // Bu satır TypeError üretecek
} catch (TypeError $e) {
echo “Hata: ” . $e->getMessage();
}
“`
Bu kod parçacığında, `isim` özelliğine integer bir değer atanması durumunda meydana gelecek olan hata, `try-catch` bloğu ile yakalanabilir. Bu kullanım, hataların kontrol edilmesine ve daha yönetilebilir olmasına olanak tanır.
Nullable Types
PHP 7.4 ayrıca nullable types desteği de getirir. Bu, bir özelliğin belirtilen türde bir değerin yanı sıra `null` değeri de alabileceği anlamına gelir. Nullable types, belirli durumlarda esneklik sağlamak amacıyla kullanılabilir.
“`php
class Kullanici {
public ?string $nickname;
public function __construct(?string $nickname) {
$this->nickname = $nickname;
}
}
“`
Yukarıdaki örnekte, `nickname` özelliği sadece bir string değeri veya `null` alabilir. Bu, kullanıcıların takma adlarının bulunmadığı durumları ele almak için yararlıdır.
Varsayılan Değerler
Typed properties, varsayılan değerler ile birlikte de kullanılabilir. Varsayılan değerler belirlemek, özelliklerin ilk değerlerinin atanmasını sağlar.
“`php
class Kullanici {
public string $isim = “Bilgi Yok”;
public int $yas = 18;
}
“`
Bu örnekte, `isim` ve `yas` özelliklerine varsayılan değerler atanmıştır. Kullanıcı bir nesne oluşturduğunda, bu varsayılan değerler kullanılacaktır. Ancak, constructor aracılığıyla bu değerler de değiştirilebilir.
Sınıf Dışı Kullanım
Typed properties yalnızca sınıf içinde değil, aynı zamanda sınıflar arasında da kullanım imkanı sunar. Bunun için soyut sınıflar ve arayüzler oluşturmak mümkündür. Arayüzlerde typed properties tanımlarken, arayüzün implement edildiği sınıflarda bu özelliklerin kesinlikle belirtilen türde olma zorunluluğu bulunmaktadır.
“`php
interface KullaniciInterface {
public function getIsim(): string;
public function getYas(): int;
}
class Kullanici implements KullaniciInterface {
public string $isim;
public int $yas;
public function __construct(string $isim, int $yas) {
$this->isim = $isim;
$this->yas = $yas;
}
public function getIsim(): string {
return $this->isim;
}
public function getYas(): int {
return $this->yas;
}
}
“`
Bu örnekte, bir arayüz tanımlanarak tüm kullanıcı sınıflarının bu arayüzü uygulaması sağlanmıştır. Bu da daha iyi bir yapı ve tutarlılık sunar.
Performans
Typed properties kullanmanın doğrudan performans artışına sebep olup olmadığını değerlendirmek zordur. Ancak, hataların daha erken aşamada yakalanması ve kodun daha okunabilir hale gelmesi, genel uygulama performansını dolaylı olarak olumlu etkiler.
Sonuç
PHP 7.4 ile gelen typed properties, geliştiricilere daha fazla kontrol ve güvenlik sunmakta olup, kod yazımını daha etkin hale getirmektedir. Sınıf özelliklerine tür belirleme imkanı, nesne yönelimli programlamayı daha sağlam bir temele oturtmakta ve hataları azaltmaktadır. Bu özelliklerin kullanımı, modern PHP uygulamalarında giderek yaygınlaşmakta ve önerilen en iyi uygulamalar arasında yer almaktadır. Typed properties, özellikle büyük ve karmaşık projelerde kod kalitesi ve bakımını artırmak açısından önemli bir adım olarak değerlendirilmektedir.