Php 8 Parametre Veri Tipleri

Php 8 Parametre Veri Tipleri

PHP 8'de parametre veri tipleri, fonksiyonlara veya metotlara geçilen argümanların hangi türde olması gerektiğini tanımlayan özelliklerdir. PHP, veri tiplerini kontrol ederek kodun güvenilirliğini ve hataların erken yakalanmasını sağlar. PHP 7'den itibaren gelen tip belirleyici (type hinting) özellikleri PHP 8 ile daha da gelişmiştir.

PHP'de tip tanımlamaları aşağıdaki temel veri türlerini destekler:

  • Basit veri tipleri: int, float, string, bool
  • Diziler: array
  • Nesneler: Sınıf adları veya object
  • İnterface'ler: Belirli bir interface’i uygulayan nesneler
  • callable : Çağrılabilir türler (fonksiyon veya method)
  • iterable : Dizi veya Traversable nesneler
  • mixed : PHP 8 ile tanıtılan çoklu tip
  • union types : PHP 8 ile gelen birleşik tipler (birden fazla tip seçeneği)

1. Temel Veri Tipleri

PHP 8, fonksiyon veya metod parametrelerine geçilecek temel veri türlerini açıkça belirlememizi sağlar. Bu, bir parametre için belirlenen tür dışında bir veri türü gönderildiğinde bir hata fırlatır.

Örnek:

function topla( int $a, int $b ): int { return $a + $b; } echo topla(5, 10); // 15 çıktısını verir

Bu örnekte, int tipi ile iki parametre alındığı belirtilmiştir. Eğer bu fonksiyona int olmayan bir değer (örneğin bir string) geçirilirse, PHP 8 hata fırlatır.

Yanlış kullanım örneği:

echo topla("5", "10"); // TypeError hatası: Argument 1 passed to topla() must be of the type int

Bu durumda, PHP 8, "5" ve "10" değerlerinin string olduğu için bir hata verir.

2. array Tipi

Bir fonksiyonun parametresi olarak sadece dizilerin (array) kabul edilmesi gerektiğini belirtebilirsiniz.

Örnek:

function diziyiYazdir( array $dizi ) { foreach ($dizi as $eleman) { echo $eleman . " "; } } diziyiYazdir([1, 2, 3]); // 1 2 3 çıktısını verir

Bu örnekte, fonksiyon yalnızca array türünde bir parametre kabul eder.

Yanlış kullanım:

diziyiYazdir("Merhaba"); // TypeError hatası: Argument 1 passed to diziyiYazdir() must be of the type array

Bu örnekte, string türünde bir değer geçirildiği için PHP 8 hata fırlatır.

3. object ve Sınıf Tipleri

Bir parametreyi belirli bir sınıf veya object türünde tanımlayarak, sadece bu türden nesnelerin parametre olarak geçilmesine izin verebilirsiniz.

Örnek:

class Araba { public $model; public function __construct( $model ) { $this->model = $model; } } function arabaBilgisi(Araba $araba ) { echo "Arabanın modeli: " . $araba->model; } $bmw = new Araba("BMW"); arabaBilgisi($bmw); // "Arabanın modeli: BMW" çıktısını verir

Bu örnekte, sadece Araba sınıfından nesneler fonksiyona geçirilebilir.

Yanlış kullanım:

arabaBilgisi("Bir araba"); // TypeError hatası: Argument 1 passed to arabaBilgisi() must be an instance of Araba

Burada bir string geçirilirse, PHP 8 hata verecektir.

4. callable Tipi

Bir fonksiyon parametresi olarak, çağrılabilir bir tür (fonksiyon veya metot) belirtilebilir.

Örnek:

function fonksiyonCagir( callable $fonksiyon ) { $fonksiyon(); } fonksiyonCagir(function() { echo "Bu bir anonim fonksiyon!"; });

Bu örnekte, callable parametresi bir fonksiyon bekler. Geçirilen fonksiyon, fonksiyon içinde çalıştırılır.

5. iterable Tipi

PHP 7.1'den itibaren, hem dizileri hem de Traversable (iterasyon yapılabilir) nesneleri kabul eden iterable tipi kullanılabilir.

Örnek:

function elemanlariYazdir( iterable $elemanlar ) { foreach ($elemanlar as $eleman) { echo $eleman . " "; } } elemanlariYazdir([1, 2, 3]); // 1 2 3 çıktısını verir

Bu örnekte, iterable tipi, hem dizileri hem de nesneleri kabul eder.

6. mixed Tipi (PHP 8 ile Tanıtıldı)

PHP 8'de yeni eklenen mixed tipi, bir parametrenin birden fazla veri türünü kabul edebileceğini belirtir. mixed, şu veri türlerini kapsar: int, float, string, bool, array, object, callable, null.

Örnek:

function yazdir( mixed $deger ) { echo $deger; } yazdir("Merhaba"); // "Merhaba" çıktısını verir yazdir(123); // "123" çıktısını verir yazdir(3.14); // "3.14" çıktısını verir

Bu örnekte, mixed tipi farklı veri türlerini kabul eder.

7. Union Types (Birleşik Tipler)

PHP 8 ile gelen birleşik tipler (union types), birden fazla veri türünün aynı parametrede kullanılmasına izin verir. Bu özellik, bir parametrenin birden fazla veri türü kabul edebileceğini açıkça belirtir.

Örnek:

function islemYap( int|float $sayi ) { return $sayi * 2; } echo islemYap(10); // 20 çıktısını verir echo islemYap(2.5); // 5 çıktısını verir

Bu örnekte, fonksiyon hem int hem de float türünde değerleri kabul edebilir. Eğer farklı bir türde değer gönderilirse PHP 8 bir hata fırlatır.

8. Varsayılan Değer ve Tip Kontrolü

PHP 8'de parametrelere varsayılan değerler atanabilir, ancak varsayılan değerin tanımlanan veri türüyle uyumlu olması gerekir. Eğer uyumsuz bir varsayılan değer atanırsa PHP hata verecektir.

Örnek:

function yazdir( int $sayi = 10 ) { echo $sayi; } yazdir(); // 10 çıktısını verir

Burada, varsayılan değer int olduğu için uyumludur ve hata oluşmaz.

Yanlış kullanım:

function yazdir( int $sayi = "On" ) { echo $sayi; }

Bu örnekte, varsayılan değer olarak string atanmıştır, ancak int beklenmektedir. PHP 8 bu durumda hata fırlatır.

Sonuç

PHP 8'de parametre veri tipleri, fonksiyonlara ve metotlara geçilen argümanların türünü kesin olarak tanımlamanıza olanak tanır. Bu sayede tip uyumsuzlukları daha erken tespit edilir ve kodun güvenilirliği artar. PHP 8 ile gelen union types ve mixed gibi yeni özellikler, daha esnek ve güçlü tip yönetimi sağlar.



Yorum Ekle

Üzerine gel