İçeriğe geç

PHP Tür Bildirimleri Kullanımı ve Örnekler (Type declarations / Type hinting)

PHP yer alan veri türü çeşitleri;
class (PHP 5)
self (PHP 5)
array (PHP 5.1)
callable (PHP 5.4)
bool (PHP 7)
float (PHP 7)
int (PHP 7)
string (PHP 7)
iterable (PHP 7.1) yinelenebilir: iterable foreach() döngüsüne girebilen değerlerdir.
object (PHP 7.2)

Verilere tür belirtmek için aşağıdaki yöntemler kullanılır;

Parametrelere Tür Atama

function printMe( int $var ) {
 echo $var;
}

$v = 200;
printMe( $v );

Dönen Değere Tür Atama

function modulus(int $a, int $b) : int {
 return $a % $b;
}

$m = modulus ( 52 , 12 ); // 4

Hata Yakalama

function printMe(int $var) {
echo $var;
}

$v = "200";
printMe( $v );
// Çıktı şu şekilde olacaktır:
Fatal error: Uncaught TypeError: Argument 1 passed to printMe() must be of the type integer, string given...

Callable Kullanımı
Callable türü eğer değer çağrılabilir ise ataması yapılabilir. Örnek kullanımı şu şekildedir;

// fonksiyon parametre olarak kullanılır.
function printFormatted(callable $format, $str) { // $format = exclaim fonksiyonu çağrılır.
  echo $format($str);
  echo "<br>";
}

function exclaim($str) { return $str . "!"; }
printFormatted("exclaim", "Hello World");  

Boolean ve Integer Kullanımı

function boolIntExample(int $val ) : bool {
 if ($val == 0)
  return false;
 return true;
}

Float ve String Kullanımı

function floatStringExm(float $val ) : string {
 return "Total: $val";
}

Iterable Kullanımı

function itrExample(iterable $itr) {
 foreach ($itr as $v) {
  echo "$v ";
 }
}

function test(){ // GENERATOR FUNCTION
 // return yerine yield kullanılan fonksiyonlar GENERATOR FUNCTION olarak adlandırılır.
 // “Return” den farklı olarak, yield işlemi gerçekleştirdikten sonra yordamı sonlandırıp fonksiyondan çıkartmıyor.
 // Her bir döngü içerisindeki sonucu yield içerisine “array” tipindeymiş gibi koyuyor; ama “yield” bir array de değil. Tam manada “Allocated memory” kullanmıyor. Her bir işlemden sonra oluşturduğu iterator nesnesinin son pozisyonundan işleme devam ediyor. Daha da somutlaştırırsak örneğimizi, hani veritabanlarinda bulunan “Cursor” mantığı ile aynı şekilde çalışıyor. Hafızaya almaktansa cursor pozisyonunu next() şeklinde ilerletiyor. Bu yüzden bir hafıza limiti ile de karşılaşmayacağız.
 // Eğer büyük datasetler ile calışacaksanız “yield” kullanmalısınız. Mesela bir text dosyasını okuduğunuzu düşünelim. Bu iş için yield kullanılabilir.
 yield 'brain '; 
 yield 'bell';
}

$itr = test();
itrExample($itr);
Kategori:Php

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.