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);
İlk Yorumu Siz Yapın