Sobes.tech
Junior

How does dynamic typing work in PHP?

sobes.tech AI

Answer from AI

PHP is a language with dynamic, weak typing.

  • Dynamic typing: The type of a variable is determined at runtime based on the value assigned to it, rather than being explicitly declared beforehand.
  • Weak typing: PHP can perform implicit type conversions (contextual conversion), which can sometimes lead to unexpected behavior when comparing or performing operations between values of different types.

Examples:

  1. Changing the type of a variable:
    <?php
    $variable = 123;    // int
    $variable = "hello"; // string
    $variable = [1, 2]; // array
    ?>
    
  2. Implicit type conversion during comparison:
    <?php
    var_dump(10 == "10"); // bool(true) - the string "10" is converted to the number 10
    var_dump(0 == false); // bool(true) - false is converted to the number 0
    var_dump("abc" == 0); // bool(true) - the string "abc" is converted to the number 0 because it does not start with a number
    ?>
    
  3. Using strict comparison to avoid implicit conversion:
    <?php
    var_dump(10 === "10"); // bool(false) - compares both value and type
    var_dump(0 === false); // bool(false)
    var_dump("abc" === 0); // bool(false)
    ?>
    

Although dynamic typing provides flexibility and speeds up development in early stages, it can lead to errors that are only detected at runtime. To improve code reliability, PHP 7+ introduced type declarations and strict types mode.

<?php
declare(strict_types=1); // Enables strict types mode for the current file

function sum(int $a, int $b): int { // Declaring argument types and return type
    return $a + $b;
}

// sum(1, "2"); // This will cause a TypeError in strict mode

?>

Type declarations and strict mode allow for type checking at static analysis time or during runtime before executing the function, which helps in writing more predictable and maintainable code.