Hikayeler

Reklam vermek için turkmmo@gmail.com

PHP - Tür İpuçları

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
Katılım
2 Mar 2015
Konular
59,185
Mesajlar
88,381
Online süresi
4ay 14g
Reaksiyon Skoru
14,227
Altın Konu
2,398
Başarım Puanı
1,051
TM Yaşı
11 Yıl 1 Ay 21 Gün
MmoLira
694,336
DevLira
234

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

PHP, fonksiyon tanımında değişkenleri ve bir sınıftaki özellikleri veya örnek değişkenleri bildirirken "tür ipuçları" kullanmayı destekler. PHP, yaygın olarak zayıf türlendirilmiş bir dil olarak kabul edilir. PHP'de, bir değişkene herhangi bir değer atamadan önce türünü bildirmeniz gerekmez.

PHP ayrıştırıcısı değişkenleri mümkün olduğunca uyumlu türlere dönüştürmeye çalışır. Bu nedenle, geçirilen değerlerden biri bir 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ısala dönüştürür.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   function addition($x, $y) {
      echo "First number: $x Second number: $y Addition: " . $x+$y;
   }
   $x="10";
   $y=20;
   addition($x, $y);
?>

Aşağıdaki çıktıyı üretecektir:

First number: 10 Second number: 20 Addition: 30

Ancak yukarıdaki örnekteki $x geçerli bir sayısal gösterimi tutmayan bir dizeyse, o zaman bir hatayla karşılaşırsınız.

PHP:
<?php
   function addition($x, $y) {
      echo "First number: $x Second number: $y Addition: " . $x+$y;
   }
   $x="Hello";
   $y=20;
   addition($x, $y);
?>

Aşağıdaki çıktıyı üretecektir:

PHP Fatal error: Uncaught TypeError: Unsupported operand types: string + int in hello.php:5

Tip ipucu verme, PHP 5.6 sürümünden itibaren desteklenir. Bu, kodunuzda bildirilen bir değişkenin beklenen tipini açıkça belirtebileceğiniz anlamına gelir. PHP, fonksiyon argümanlarına, dönüş değerlerine ve sınıf özelliklerine tip ipucu vermenize olanak tanır. Bununla, daha sağlam kod yazmak mümkündür.

Yukarıdaki programdaki toplama fonksiyonuna tür ipucu özelliğini dahil edelim.

function addition($x, $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}

Tip ipucu özelliği çoğunlukla IDE'ler (Bütünleşik Geliştirme Ortamı) tarafından, fonksiyon bildiriminde kullanılan parametrelerin beklenen tipleri hakkında kullanıcıya bilgi vermek için kullanılır.

Aşağıdaki şekil, yazarken VS Code düzenleyicisinin fonksiyon prototipini nasıl açtığını gösterir.

1.jpg

İmleç fonksiyon adının üzerine geldiğinde, parametreler ve dönüş değeri için tür bildirimleri görüntülenir.

php_type_hints_2.jpg

Değişken bildirimlerinde yalnızca veri türlerini kullanmanın eşleşmeyen tür istisnasının ortaya çıkmasını engellemediğini unutmayın, çünkü PHP dinamik olarak türlendirilmiş bir dildir. Başka bir deyişle, $x="10" ve $y=20 yine de 30 olarak toplamayla sonuçlanacakken, $x="Hello" ayrıştırıcının hatayı ortaya çıkarmasına neden olur.


strict_types (sıkı_türler)​

PHP, tür dönüşümü için daha katı kurallar koyabilir, böylece "10" örtük olarak 10'a dönüştürülmez. Bu, strict_types yönergesini bir declare() ifadesinde 1 olarak ayarlayarak uygulanabilir. declare() ifadesi, PHP kodundaki ilk ifade olmalı, " <?php " etiketinden hemen sonra onu bulabilirsiniz.

Örnek

Aşağıdaki çıktıyı üretecektir :

First number: 10 Second number: 20 Addition: 30

Şimdi, eğer $x "10" olarak ayarlanırsa, örtük dönüşüm gerçekleşmeyecek ve aşağıdaki hatayla sonuçlanacaktır:

PHP Fatal error: Uncaught TypeError: addition(): Argument #1 ($x) must be of type int, string given

VS Code IDE de aynı etkinin hatasını gösteriyor.

php_type_hints_3.jpg

PHP 7'den itibaren, beklenmeyen dönüş değerlerini önlemek için fonksiyon dönüşleri için tip ipucu desteği genişletilmiştir. Parametre listesinden sonra iki nokta üst üste ( : ) sembolüyle öneklenen amaçlanan tipi ekleyerek dönüş değerlerine tip ipucu verebilirsiniz.

Örnek

Yukarıdaki toplama fonksiyonunun dönüş değerine bir tip ipucu ekleyelim.

PHP:
<?php
   declare (strict_types=1);
   function addition(int $x, int $y) : int {
      return $x+$y;
   }

   $x=10;
   $y=20;

   $result = addition($x, $y);
   echo "First number: $x Second number: $y Addition: " . $result;
?>

Burada da eğer fonksiyonun tam sayıdan farklı bir değer döndürdüğü tespit edilirse, IDE çalıştırmadan önce bunun sebebini belirtir.

php_type_hints_4.jpg

Birlik Türleri

PHP, 8.0 sürümüyle birlikte birleşim türlerini tanıttı. Artık tek bir bildirim için birden fazla tür belirtebilirsiniz. Veri türleri " | " sembolüyle ayrılır.

Örnek

Aşağıdaki addition() fonksiyonunun tanımında, $x ve $y argümanları int veya float türünde olabilir.

PHP:
<?php
   declare (strict_types=1);
   function addition(int|float $x, int|float $y) : float {
      return $x+$y;
   }
   $x=10.55;
   $y=20;

   $result = addition($x, $y);
   echo "First number: $x Second number: $y Addition: " . $result;
?>

Sınıfta Tip İpucu

PHP'de 7.4 sürümünden itibaren sınıf özelliklerinin ve metotlarının bildiriminde tip ipuçlarını kullanabilirsiniz.

Örnek

Aşağıdaki örnekte, sınıf oluşturucusu tür ipuçlarını kullanır.

PHP:
<?php
   declare (strict_types=1);
   class Student {
      public $name;
      public $age;
      public function __construct(string $name, int $age) {
         $this->name = $name;
         $this->age = $age;
      }

      public function dispStudent() {
         echo "Name: $this->name Age: $this->age";
      }
   }
   $s1 = new Student("Amar", 21);
   $s1->dispStudent();
?>

Sınıf özelliklerinin bildiriminde tip ipuçlarının kullanılması da mümkündür.

PHP:
class Student {
   public string $name;
   public int $age;

   public function __construct($name, $age) {
      $this->name = $name;
      $this->age = $age;
   }

   public function dispStudent() {
      echo "Name: $this->name Age: $this->age";
   }
}

Program geliştirme sırasında en sık karşılaşılan hatalar tip hatalarıdır. Tip ipucu özelliği bunların azaltılmasına yardımcı olur.
 

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

Geri
Üst