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의 느슨한 타입 스타일과 구별 짓습니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기