Hikayeler

Reklam vermek için turkmmo@gmail.com

PHP - Sıkı Tiplendirme

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,382
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!

cats.jpg



PHP yaygın olarak zayıf türde 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üre dönüştürmeye çalışır.

Örneğin, 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ısal değere 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 dize ise, 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 İpuçları

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(int $x, int $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}

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 toplamayı 30 olarak sonuçlandırırken, $x="Hello" ayrıştırıcının hatayı ortaya çıkarmasına neden olur.

Örnek


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

   $x=10;
   $y=20;
   addition($x, $y);

   $x="10";
   $y=20;
   addition($x, $y);

   $x="Hello";
   $y=20;
   addition($x, $y);
?>

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

First number: 10
Second number: 20
Addition: 30

First number: 10
Second number: 20
Addition: 30

First number: Hello
Second number: 20
PHP Fatal error: Uncaught TypeError: Unsupported operand
types: string + int in hello.php:5

strict_types (sıkı_türler)​

PHP, tip dönüşümü için daha katı kurallar koyabilir, böylece "10" örtük olarak 10'a dönüştürülmez. Bu, declare() ifadesinde strict_types yönergesini 1 olarak ayarlayarak uygulanabilir.

declare() ifadesi PHP kodunda "<?php" etiketinden hemen sonra gelen ilk ifade olmalıdır.

Örnek

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

PHP:
<?php
   declare (strict_types=1);
   function addition(int $x, int $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

Ş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

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

Aşağıdaki division() fonksiyonunun dönüş değerine bir tip ipucu ekleyelim.

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

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

Fonksiyon, int türünde olmayan (yani fonksiyonun dönüş değeri için kullanılan tür ipucu) 0,5 döndürdüğünden, aşağıdaki hata görüntülenir:

Fatal error: Uncaught TypeError: division(): Return value must be
of type int, float returned in hello.php:5
 

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

Geri
Üst