PHP7 - Scalar Type Declarations(Skaler Tip Beyanları)

PHP 7'de yeni bir özellik olan Scalar tipi bildirimleri tanıtıldı. Bildirimleri fonksiyonların çalıştırılması sırasında belli bir tür gerektirmesini sağlar. Eğer değer uygun olmayan bir türdeyse PHP 5'de kurtarılabilir bir ölümcül hata oluşurken, PHP 7'de TypeError istisnası oluşur.

Skaler tip bildirimde iki seçenek bulunur.

Yukarıdaki fonksiyonlar kullanılarak aşağıdaki fonksiyon parametreleri türleri uygulanabilir.

PHP Type Declaration (Tür Dayatma)


Tür bildirimi, Derleyiciye bildirilen veya döndürülen değerin belirli bir Türle eşleşip eşleşmediğini kontrol etmesini gerektiren bir koddaki ifadedir. Verilen değer beklenen tipte değilse, bir hata üretilir. Tür bildirimleri PHP 5'deydi, ancak PHP 5'te yalnızca skaler olmayan veri türlerini açıklayabildik ve dönüş türlerini bildiremedik (bir fonksiyon veya yöntemden döndürülecek değerler).

TİP BELİRLEME JUGGLING (HOKKABAZLIK) PHP 7 İÇİN SKALER TÜRLERİ


PHP derleyicisi, açıkça belirtilmediğinde her bir durumda hangi veri tipiyle başa çıkması gerektiğini nasıl anlar? PHP dinamik olarak yazılmış bir dildir, bu yüzden mümkün olan her yerde type juggling" denir. «Tip juggling» , önceden tanımlanmış bir dizi kurala dayanarak PHP derleyici tarafından bir değişkenin veri tipinin otomatik olarak belirlenmesi sürecidir. Type juggling (Tip hokkabazlığı) PHP5'te haber vermeksizin potansiyel veri kaybı ile birlikte gelir. Type juggling bağlı olarak olası veri kaybı sorunu PHP 7'de skaler tip bildirimleriyle düzeltildi.


<?php

$a='x'; // string

$b=2; //integer

function FunctionName ($a, $b){

return $a * $b;
}

echo FunctionName ($a, $b);

?>

ÇIKTI:

SONUÇ: 0 (PHP5'te veri tipi Type juggling olması ve skaler tipi bildiriminin olmaması nedeniyle veri kaybı)


<?php

$a="1text"; //type juggling yöntemi ile Tamsayı

$b=2; //integer

function FunctionName ($a, $b){

return $a + $b;

}
echo FunctionName ($a, $b); //iyi oluşmamış bir sayısal değer.

?>

ÇIKTI:

Notice: A non well formed numeric value encountered in veri kaybı


<?php

$a='x'; // string

$b=2; //integer

function FunctionName ($a, $b){

return $a * $b;

}

echo FunctionName ($a, $b);

?>

ÇIKTI:

sayısal olmayan değer

PHP7 SCALAR TYPE DECLARATIONS (SKALER TİP BİLDİRİMLERİ)


Skaler tip açıklamaları PHP'de çok uzun zamandır talep edilen bir özellik olmuştur. Bunları uygulamanın doğru yolu ile ilgili uzun süredir tartışılmaktadır.

PHP 7'de skaler tip bildirimi nedir? Skaler tip beyanı, sadece verilen skaler veri tipinin (int, float, string veya boolean) argümanlarını (parametrelerini) kabul etme veya değerleri döndürme fonksiyonuna ifade eder.

Bir skalar türü bildirimi belirtmek için, skalar veri türünün adı parametre adından önce eklenmelidir.


 function FunctionName (int $a, int $b){ 

 return $a + $b; 

}

Yukarıdaki örnekte, bu fonksiyonu çağırmadan önce, PHP7 yorumlayıcısı $a veya $b değişkenlerinin tamsayı olup olmadığını kontrol edecektir. Değilse, PHP7 derleyici özel bir PHP7 TypeError istisnası oluşturur.


// zayıf mode

$a='x'; // string

$b=2; //integer

function FunctionName (int $a, int $b){

return $a * $b;
}

echo FunctionName ($a, $b);

ÇIKTI: TypeError: FunctionName () öğesine iletilen bağımsız değişken


// zayıf mode

$a=1; // integer

$b=2; //integer

function FunctionName (int $a, int $b){

return $a + $b;

}

echo FunctionName ($a, $b);

ÇIKTI: 3


// zayıf mode

$a=3.5; // float

$b=2; //integer

function FunctionName (int $a, int $b){

return $a + $b;

}

echo FunctionName ($a, $b);

ÇIKTI:5 Tür olarak int ile tanımlanan parametreye float sayı girdiğinizde sayının tam kısmını alır. Noktadan sonraki sayı işleme alınmaz.

Tür olarak float ile tanımlanan parametreye tam sayı yada noktalı sayı girilebilir.


// zayıf mode

$a=3.5; // float

$b=2; //integer

function FunctionName (float $a, float $b){

return $a + $b;

}

echo FunctionName ($a, $b);

ÇIKTI:5

PHP7 YENİ ÖZELLİK STRICT MODE (KATI MOD)


Varsayılan olarak, tüm PHP7 dosyaları zayıf tip kontrol modundadır (önceki PHP yorumlayıcısında olduğu gibi). Yeni bir declare() yönergesi eklenir, strict_types, ya 1 ya da 0 değer alır. 1 ise, fonksiyon çağrıları için katı tip kontrol modu kullanılır ve bu dosyadaki ifadeleri döndürür. Farklı modlar kullanma olasılığı hakkında güzel olan şey, eğer bir kütüphanenin katı bir mod kullanıyorsa ve bir diğerinin kayıtsız kalmaması durumunda endişelenmenize gerek kalmaması - skaler tip beyanları sadece fonksiyon çağrısı ile dosyada çalışır.


declare(strict_types=1); // strict mode

$a='1'; // string

$b=2; //integer

function FunctionName (int $a, int $b){

return $a + $b;
}
echo FunctionName ($a, $b);

PHP Fatal error "a" değişkeni Tamsayı girilmemiştir.

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

1783

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.