Functions accept required and optional parameters, can use variadics, and may return any type—including void or union types in PHP 8+.
Default values
function paginate(int $page = 1, int $perPage = 20): array {
return ['page' => $page, 'perPage' => $perPage];
}
Defaults must be static expressions—no function calls unless constant.
Variadic ...$args
function sum(int ...$nums): int {
return array_sum($nums);
}
Named arguments (PHP 8+)
paginate(perPage: 50, page: 2);
Nullable and union returns
function findUser(int $id): ?array { /* null if missing */ }
Important interview questions and answers
- Q: Pass by value vs reference?
A: Scalars and arrays copy by default; prefix parameter with&to pass by reference—use sparingly.
Self-check
- Can required parameters follow optional ones?
- What does
?arraymean as a return type?