- Katılım
- 2 Mar 2015
- Konular
- 59,189
- Mesajlar
- 88,439
- Çözüm
- 109
- Online süresi
- 4mo 16d
- Reaksiyon Skoru
- 14,280
- Altın Konu
- 2,398
- TM Yaşı
- 11 Yıl 3 Ay 7 Gün
- Başarım Puanı
- 1,051
- MmoLira
- 695,092
- DevLira
- 234
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!
PHP sürüm 7, skaler tip bildirim özelliğini bir fonksiyonun dönüş değerine de genişletiyor. Bu yeni hükme göre, dönüş tipi bildirimi bir fonksiyonun döndürmesi gereken değerin tipini belirtir. Dönüş tipleri için aşağıdaki tipleri bildirebiliriz.
- int
- float
- bool
- string
- interfaces
- array
- callable
function myfunction(type $par1, type $param2): type {
# function body
return $val;
}
PHP ayrıştırıcısı varsayılan olarak zorlayıcı yazımdır. Tanımda kullanılan türle döndürülecek değişkenin türünün daha sıkı doğrulanmasını sağlamak için "strict_types=1" bildirmeniz gerekir.
Örnek
Aşağıdaki örnekte division() fonksiyonu int dönüş tipinde tanımlanmıştır.
Kod:
<?php
function division(int $x, int $y): int {
$z = $x/$y;
return $z;
}
$x=20.5;
$y=10;
echo "First number: " . $x;
echo "\nSecond number: " . $y;
echo "\nDivision: " . division($x, $y);
?>
Tip kontrolü strict_types=1 olarak ayarlanmadığından, parametrelerden biri tam sayı olmasa bile bölme işlemi gerçekleşir.
First number: 20.5
Second number: 10
Division: 2
Ancak scriptin en başına strict_types bildirimini eklediğiniz anda program ölümcül bir hata mesajı veriyor.
Kod:
Fatal error: Uncaught TypeError: division(): Argument #1 ($x) must be of type int, float given, called in div.php on line 12 and defined in div.php:3
Stack trace:
#0 div.php(12): division(20.5, 10)
#1 {main}
thrown in div.php on line 3
VS Code, hata satırlarını hata konumunda görüntüleyerek kodu çalıştırmadan önce bile hata konusunda uyarır.
Örnek
division() fonksiyonunun int yerine float döndürmesini sağlamak için, payı float'a dönüştürün ve PHP'nin ölümcül hatayı nasıl ortaya çıkardığını görün.
Kod:
<?php
// declare(strict_types=1);
function division(int $x, int $y): int {
$z = (float)$x/$y;
return $z;
}
$x=20;
$y=10;
echo "First number: " . $x;
echo "\nSecond number: " . $y;
echo "\nDivision: " . division($x, $y);
?>
Üstteki declare ifadesini yorumdan çıkarın ve çıktısını kontrol etmek için bu kodu burada çalıştırın. Bir hata gösterecektir;
Kod:
First number: 20
Second number: 10PHP Fatal error: Uncaught TypeError: division(): Return value must be of type int, float returned in /home/cg/root/14246/main.php:5
Stack trace:
#0 /home/cg/root/14246/main.php(13): division()
#1 {main}
thrown in /home/cg/root/14246/main.php on line 5

