Nesting

Nesting refers to the practice of placing code block or construct inside another.

This is commonly used with loops, conditional statements, functions, classes, arrays, generators, attributes, ternaries, try-catch, etc.

Nesting creates more complex and intricate logic. It usually erodes readability by mixing two contexts in the same code location, or generating unexpected code.

<?php

    // Nested attributes
    #[
        MyAttribute(
            new OptionA(),
            new OptionB()
        )
    ]
    function headers() : never {
    }

    // Nested conditions
    if ($condition1) {
        if ($condition2) {
            // Code to run when both condition1 and condition2 are true
        } else {
            // Code to run when condition1 is true but condition2 is false
        }
    } else {
        // Code to run when condition1 is false
    }

    // Nested loops
    for ($i = 0; $i < 3; $i++) {
        for ($j = 0; $j < 3; $j++) {
            // Code to handle the combination of $i and $j
        }
    }

    // Nested functions
    function outerFunction() {
        // Code in the outer function

        function innerFunction() {
            // Code in the inner function
        }

        innerFunction(); // Call the inner function
    }

?>

Documentation

See also PHP Nested Try-Catch.

Related : Array, Attribute, Ternary Operator, Loops, If Then Else, Nested Attributes