raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP - Dönüş Tipi Bildirimleri

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,441
Çö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
Ticaret - 0%
0   0   0

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_Logo.png



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
Dönüş tipi bildirimini uygulamak için bir fonksiyon şu şekilde tanımlanır:

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.

php_return_type_declarations.jpg


Ö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
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst