1~

Minter Coder's Blog

9-PHP Type Juggling

9-PHP Type Juggling

PHP dynamic typed programlama dilidir.Bir verinin türü otomatik olarak php'de, dynamic bir şekilde değişir.Bu özelliğe type juggling denir.

Örnek 1

<?php
    $arrayVariable = [1,2,3,4];
    echo "Type : " . gettype($arrayVariable) . "<br>";
    $boolVariable = false;
    echo "Type : " . gettype($boolVariable) . "<br>";
    $intVariable = 12;
    echo "Type : " . gettype($intVariable) . "<br>";
    $floatVariable = 3.14;
    echo "Type : " . gettype($floatVariable) . "<br>";
    /*
     *  ÇIKTILAR SIRASIYLA.
        Type : array
        Type : boolean
        Type : integer
        Type : double
     * */
?>

Örnekte de görüldüğü üzere her bir değişkenin türü otomatik olarak değişmektedir. PHP'de bu özelliğe "type juggling" denir.

Örnek 2

<?php 
    # ÖRNEK 2
    $intVal = 1;
    $stringVal = "10";
    $sum = $intVal + $stringVal;
    var_dump($sum); // Output : int(11)
?>

Bu örnekte de görüldüğü üzere string değişkeni toplama işlemi yapıldığı için otomatik olarak integer türüne dönüştürülmüştür.

Type Casting vs Type Juggling


Juggling sürecinde PHP değişkenin türünü otomatik olarak (dynamically) bir türden diğer türe dönüştürme sürecidir. Örneğin biz bir integer değerini bir değişkene atadığımızda artık o değişkenin türü int olur. Casting sürecinde ise biz kullanıcı olarak açık bir şekilde yani yazılımcı hangi türden hangi türe dönüştürme sürecini explicitly, açık bir şekilde belirtme sürecidir.

<?php 
    $var1=100;
    $var2=(boolean)$var1;
    $var3=(string)$var1;
    $var4=(array)$var1;
    $var5=(object)$var1;
    var_dump($var2, $var3, $var4, $var5); // Output : int(11) bool(true) string(3) "100" array(1) { [0]=> int(100) } object(stdClass)#1 (1) { ["scalar"]=> int(100) } 
?>