ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Tip ipuçları sağlama özelliği PHP'de sürüm 5'ten beri mevcuttur. Tip ipucu, bir parametrenin veri türünü fonksiyon tanımında sağlama uygulamasına atıfta bulunur. PHP 7'den önce, bir fonksiyonda tip ipuçları için yalnızca dizi, çağrılabilir ve sınıf kullanmak mümkündü. PHP 7'den itibaren, int, string, bool vb. gibi skaler veri türündeki parametreler için de tip ipuçları ekleyebilirsiniz.
PHP dinamik (ve zayıf) tipli bir dildir. Bu nedenle, bir fonksiyon tanımlandığında parametrenin tipini bildirmeniz gerekmez, bu da C veya Java gibi statik tipli bir dilde gereklidir.
PHP'de fonksiyonun tipik bir tanımı şu şekildedir:
function addition($x, $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}
Burada, $x ve $y parametrelerinin sayısal olduğunu varsayıyoruz. Ancak, fonksiyona geçirilen değerler sayısal olmasa bile, PHP ayrıştırıcısı değişkenleri mümkün olduğunca uyumlu türe dönüştürmeye çalışır.
Eğer geçirilen değerlerden biri sayının dize gösterimiyse ve ikincisi sayısal bir değişkense, PHP toplama işlemini gerçekleştirmek için dize değişkenini sayısal değere dönüştürür.
Bu kodu çalıştırın ve nasıl bir hata gösterdiğine bakın.
PHP 7'de Skaler Tip Bildirimleri
PHP 7 versiyonuyla gelen yeni bir özellik, parantez içinde veri tipi belirtilebilen parametrelere sahip bir fonksiyon tanımlamaya olanak sağlıyor.
PHP 7 aşağıdaki Skaler tip bildirimlerini tanıttı:
Uluslararası
Batmadan yüzmek
Bool
Sicim
Arayüzler
Sıralamak
Çağrılabilir
PHP'nin eski sürümleri yalnızca dizi, çağrılabilir ve sınıf türlerinin tür ipuçları olarak kullanılmasına izin veriyordu. Ayrıca, PHP'nin eski sürümlerinde (PHP 5), ölümcül hata kurtarılabilir bir hatayken yeni sürüm (PHP 7) atılabilir bir hata döndürüyordu.
Skaler tip bildirimi iki modda uygulanır:
Zorlayıcı Mod − Zorlayıcı varsayılan moddur ve belirtilmesi gerekmez.
Sıkı Mod − Sıkı modun açıkça ima edilmesi gerekir.
Zorlayıcı Mod
Önceki örnekte tanımlanan addition() fonksiyonu artık tip bildirimlerini aşağıdaki şekilde dahil ederek yeniden yazılabilir:
Kod:
function addition(int $x, int $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}
Ayrıştırıcının, daha önce olduğu gibi, dize bir tamsayı içeriyorsa, uyumsuz türleri (yani, dizeyi) hala int'e dönüştürdüğünü unutmayın.
Açıkçası, bunun nedeni PHP'nin zayıf tipli bir dil olmasıdır, çünkü PHP bir string türündeki değişkeni bir tam sayıya zorlamaya çalışır. PHP 7, bu sorunu ele alan sıkı bir mod özelliği sunmuştur.
Sıkı Mod
PHP'nin zayıf tip denetimine karşı koymak için sıkı bir mod tanıtıldı. Bu mod bir declare ifadesiyle etkinleştirilir.
Kod:
declare (strict_types=1);
Bu ifadeyi PHP betiğinin en üstüne (genellikle PHP etiketinin hemen altına) koymalısınız. Bu, skalerler için yazımın katılığının dosya başına yapılandırıldığı anlamına gelir.
Zayıf modda, strict_types bayrağı 0'dır. 1 olarak ayarlanması, PHP ayrıştırıcısının geçirilen parametrelerin ve değerlerin uyumluluğunu kontrol etmesini zorlar. Yukarıdaki koda bu ifadeyi ekleyin ve sonucu kontrol edin. Aşağıdaki hata mesajını gösterecektir.
Kod:
Fatal error: Uncaught TypeError: addition():
Argument #1 ($x) must be of type int, string given,
called in add.php on line 12 and defined in add.php:4
Stack trace:
#0 add.php(12): addition('10', 20)
#1 {main}
thrown in add.php on line 4
Örnek
İşte fonksiyon tanımında skaler tip bildiriminin başka bir örneği. Etkinleştirildiğinde sıkı mod, uyumsuz tipler parametre olarak geçirilirse ölümcül hataya neden olur.
Bu kodun en üstündeki declare ifadesini yorumdan çıkarın ve çalıştırın. Şimdi bir hata üretecek.
Kod:
Fatal error: Uncaught TypeError:
sum(): Argument #2 must be of type int, string given,
called in add.php on line 9 and defined in add.php:4
Stack trace:
#0 add.php(9): sum(2, '3', 4.1)
#1 {main}
thrown in add.php on line 4
Tip ipucu özelliği çoğunlukla IDE'ler tarafından, kullanıcıya fonksiyon bildiriminde kullanılan parametrelerin beklenen tipleri hakkında bilgi vermek için kullanılır. Aşağıdaki ekran görüntüsü, yazarken VS Code düzenleyicisinin fonksiyon prototipini açtığını gösterir.