PHP 8 News: Named Arguments

PHP 8 News: Named Arguments

Named arguments in PHP 8 allow you to pass arguments to a function by specifying the parameter name along with the value, rather than relying on the order of parameters as defined in the function signature. This feature provides more flexibility and readability, especially for functions with a large number of parameters or optional parameters.

Here's how named arguments work in PHP 8:

Passing Arguments by Name

Instead of relying on the order of parameters, you can specify the parameter name followed by the value you want to pass.

function greet(string $name, int $age): void {
    echo "Hello, $name! You are $age years old.";
}

// Without named arguments
greet('Zero', 24); // Outputs: Hello, Zero! You are 24 years old.

// With named arguments
greet(name: 'Zero', age: 24); // Outputs: Hello, Zero! You are 24 years old.

Skipping Optional Parameters

When a function has optional parameters, you can skip them and only provide values for the parameters you want to set.

function greet(string $name, int $age = 18): void {
    echo "Hello, $name! You are $age years old.";
}

// Without named arguments
greet('Zero'); // Outputs: Hello, Zero! You are 18 years old.

// With named arguments
greet(name: 'Zero'); // Outputs: Hello, Zero! You are 18 years old.

Non-Sequential Parameter Passing

Named arguments allow you to pass parameters in any order, making the code more readable and reducing the chances of errors, especially when functions have many parameters.

function greet(string $name, int $age): void {
    echo "Hello, $name! You are $age years old.";
}

// Using named arguments in any order
greet(age: 24, name: 'Zero'); // Outputs: Hello, Zero! You are 24 years old.

Named arguments improve code readability and make it easier to understand the intent of the function call, especially when dealing with functions that have multiple parameters or default values. However, it's essential to use named arguments judiciously and consider readability and maintainability when deciding whether to use them.