PHP 함수는 function 키워드로 정의합니다. 현대 PHP는 매개변수와 반환값에 대한 타입 선언, 기본값, 가변 인자 매개변수를 지원합니다 — 이로써 함수가 더 견고하고 자기 설명적이 됩니다.
타입 선언이 있는 기본 함수
{
+ ;
}
{
;
}
();
(, );
타입 선언(int $a, : int 반환 타입)은 PHP가 인자와 반환 타입을 검사하게 하여 — 버그를 잡고 의도를 문서화합니다. 기본값은 매개변수를 선택적으로 만듭니다.
function find(?int $id): ?User { // ? = 널 허용 (int|null, User|null)
return $id ? lookup($id) : null;
}
function process(int|string $input): void { // 유니온 타입 — int 또는 string (PHP 8)
// ...
}
?Type은 null을 허용하며, 유니온 타입(int|string, PHP 8)은 여러 타입을 허용합니다 — 시그니처를 정밀하게 만듭니다.
function sum(int ...$numbers): int { // 가변 인자 — 임의 개수의 int 인자
return array_sum($numbers);
}
sum(1, 2, 3); // 6
// 명명된 인자 (PHP 8) — 매개변수 이름으로 전달, 선택적 인자 건너뛰기
greet(name: "Ann", greeting: "Hey");
<?php
declare(strict_types=1); // 파일 최상단에서 — 엄격한 타입 검사 강제
add("5", 3); // ❌ strict_types에서는 TypeError (없으면 "5"가 5로 강제 변환됨)
declare(strict_types=1)는 타입 선언을 엄격하게 만듭니다 — PHP가 타입 불일치를 조용히 강제 변환하는 대신 거부하며, 이는 버그를 잡는 권장 현대 관행입니다.
현대 PHP의 함수 정의 — 특히 타입 선언 — 을 이해하는 것은 견고하고 유지보수 가능한 코드를 작성하는 데 중요하며, PHP가 느슨한 타입의 기원에서 얼마나 발전했는지를 보여줍니다.
타입이 지정된 매개변수와 반환값(널 허용 및 유니온 타입 포함)은 함수를 자기 설명적으로 만들고 PHP가 타입 오류를 잡게 하며, 기본 인자, 명명된 인자, 가변 인자는 유연하고 읽기 쉬운 시그니처를 제공합니다.
가장 중요한 현대 관행은 **declare(strict_types=1)**로, 엄격한 타입 검사를 강제합니다(불일치를 조용히 강제 변환하는 대신 거부) — 버그를 일찍 잡고 신뢰할 수 있는 코드를 작성하는 핵심 도구입니다.
기본값을 갖는 잘 타입화된 함수를 정의하는 법과 엄격한 타입을 사용하는 법을 아는 것은 전문적인 현대 PHP 개발의 일상 지식이며, 견고하고 타입 안전한 코드를 구식 PHP의 느슨한 타입 스타일과 구별 짓습니다.