Использование settype в PHP вместо typecasting с помощью скобок, в чем разница?

В PHP вы можете придумать что-то вроде объекта; (объект), или вы можете использовать settype ($ var, "object") – но мой вопрос в чем разница между этими двумя?

Какой из них более эффективен / лучше использовать? На данный момент я нахожу, что использование (объект) выполняет эту работу, но интересно, почему есть функция settype.

Related of "Использование settype в PHP вместо typecasting с помощью скобок, в чем разница?"

Кастинг изменяет то, что обрабатывается переменной, как в текущем контексте, settype изменяет его навсегда.

$value = "100"; //Value is a string echo 5 + (int)$value; //Value is treated like an integer for this line settype($value,'int'); //Value is now an integer 

В основном settype является ярлыком для:

 $value = (type)$value; 

settype() изменяет фактическую переменную, которую он передал, в скобках не делается.

Если вы используете settype в $var чтобы изменить его на целое число, он будет постоянно потерять десятичную часть:

 $var = 1.2; settype($var, "integer"); echo $var; // prints 1, because $var is now an integer, not a float 

Если вы просто выполняете бросок, исходная переменная не изменяется.

 $var = 1.2; $var2 = (integer) $var; echo $var; // prints 1.2, because $var didn't change type and is still a float echo $var2; // prints 1