PHP tür dayatma(type declaration), kod okuma ve anlamada oldukça faydalı olan ve beklenmedik durumlarda yanlış tip de veri gelmesi durumunu engelleyen güzel bir özelliktir. Bazı durumlarda belli parametrelerin sadece izin verilen tiplerde ya da belli bir tipde olmasını bekleriz. Bu gibi durumlarda parametre için ya da return edilen değer için tip belirlemesi yapabilirsiniz. Bu sayede yanlış veri gelmesini yada return edilmesini engellemiş olursunuz. Tür dayatma (Type declaration) kullanılması aynı zamanda kodun okunabilirliğini de arttıracaktır.
İçindekiler Tablosu
Tür Dayatmasız Method Örneği
Aşağıdaki kod blogunda tür dayatlaması bulunmayan $a ve $b parametrelerini alan karsilastir isimli methodun örneği bulunmaktadır. Bu method $a ve $b parametrelerine hangi tipde veri atanırsa atansın bu method gelen değerleri kabul edecektir. Method gelen değeri karşılaştırdıktan sonrada duruma göre true ya da null değerini return edecektir.
function karsilastir($a, $b)
{
if($a > $b) {
return true;
}
return null;
}
Tür Dayatmalı Method Örneği
Aşağıdaki kod blogunda tür dayatlaması ile integer olarak belirtilmiş $a ve $b parametrelerini alan karsilastir isimli methodun örneği bulunmaktadır. Methodda belirtilen int tanımı parametrelerin sadece integer değer kabul edeceğini göstermektedir. Bu method $a ve $b parametrelerine sadece integer değer atanmış ise gelen değerleri kabul edecektir aksi durumdaysa php hata fırlatacaktır.
Method gelen değeri karşılaştırdıktan sonrada duruma göre true ya da null değerini return edecektir. Dikkat edersiniz methoddan sonra : bool tanımlaması mevcut. Bu tanım return eğilen değer için tür dayatmasıdır. Bu tanımlamada bulunan bool ifadasi methodun sadece boolean bir değer return edebileceğini göstermektedir. Eğer karsilastir methodu burada belirtilen tip dışında bir veri tipi return ederse php hata fırlatacaktır.
function karsilastir(int $a, int $b): bool
{
if($a > $b) {
return true;
}
return null;
}
Tür Dayatmada Null Değer Belirtme
Aşağıdaki kod blogunda tür dayatlaması ile integer ya da null olarak belirtilmiş $a ve $b parametrelerini alan karsilastir isimli methodun örneği bulunmaktadır. Methodda belirtilen ?int tanımı parametrelerin sadece integer ya da null değer kabul edeceğini göstermektedir. Bu method $a ve $b parametrelerine sadece null ya da integer değer atanmış ise gelen değerleri kabul edecektir aksi durumdaysa php hata fırlatacaktır.
Method gelen değeri karşılaştırdıktan sonrada duruma göre true ya da null değerini return edecektir. Dikkat edersiniz diğer methodun aksine methoddan sonra : ?bool tanımlaması mevcut. Bu tanım return eğilen değer için tür dayatmasıdır. Bu tanımlamada bulunan ‘?’ ifadesi methodun boolean değer dışında null değerde return edebilceğini göstermektedir. Eğer karsilastir methodu burada belirtilen tipler dışında bir veri tipi return ederse php hata fırlatacaktır.
function karsilastir(?int $a, ?int $b): ?bool
{
if($a > $b) {
return true;
}
return null;
}
Tür Dayatma İçin Kullanılabilir Tipler
Tür dayatma için en sık kullanılan tipler:
- Class/Interface : Değer belitilen class ya da interface tipinde olmalı
- array : Değer array tipinde olmalı
- bool: Değer boolean bir değer olmalı
- float: Değer ondalık bir sayı olmalı
- int: Değer tam bir sayı olmalı
- string: Değer metin içerikli olmalı
- object: Değer bir obje olmalı
Listenin tamamına ve farklı örneklere PHP’inin kendi sitesinden ulaşabilirsiniz: Php Type Declarations