Fethi Polat 1
Fethi Polat
Bvural41 1
Bvural41
OnurBoyla 1
OnurBoyla
mavzermete 1
mavzermete
xranzei 1
xranzei
Hikaye Ekle

PHP - Dönüş Tipi Bildirimleri

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. 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