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 veyaTraversablenesneler -
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. 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. 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. 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. 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. 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.
Bu ders size yardımcı oldu mu? Puan verin!
Geri bildiriminiz içeriğimizi sürekli güncel ve kaliteli tutmamızı sağlar.
Sıkça Sorulan Sorular (SSS)
Bu ders ve konuyla ilgili en çok merak edilenler
Php 8 Parametre Veri Tipleri dersini öğrenmek için ön koşul var mı?
Bu eğitim temel seviyeden ileri seviyeye adım adım hazırlanmıştır. Kodları kopyalayıp Canlı Editör üzerinde test ederek kolayca pratik yapabilirsiniz.
Örnek kodları kendi projelerimde ücretsiz kullanabilir miyim?
Evet, PHP Hocası üzerindeki tüm kod örnekleri açık kaynak mantığıyla sunulmaktadır. Ticari veya kişisel projelerinizde serbestçe kullanabilirsiniz.
Takıldığım bir yerde nereden soru sorabilirim?
Dersin altındaki topluluk yorumları bölümünden sorunuzu sorabilirsiniz. Eğitmenlerimiz ve topluluk üyelerimiz kısa sürede yanıt verecektir.
Topluluk Yorumları (0)
Ders Hakkında Yorum Yap veya Soru Sor
Henüz yorum yapılmamış. İlk yorumu siz yazın!