PHP 함수 (Functions)
PHP 함수 (Functions)
코드가 반복되기 시작하면 계산·동작의 묶음을 하나로 정리하고 싶어져요. PHP에서는 이렇게 재사용 가능한 묶음을 함수로 만드는데, function 키워드로 정의하고 이름 뒤에 ()를 붙여 호출해요. 함수는 어디서 정의하든 전역에서 부를 수 있고, 호출 순서와 무관하게 작동해요.
본문
사용자 정의 함수
function 키워드 뒤에 함수 이름, 괄호 안에 매개변수 목록, 중괄호 안에 본문을 써요. 함수는 값을 돌려줄 수도 있는데, return으로 반환해요. 반환값이 없으면 null을 반환한 것으로 간주해요.
function add($a, $b) {
return $a + $b;
}
echo add(2, 3); // 5
매개변수와 인자
함수 이름 앞에 ...를 붙이면 가변 개수의 인자를 배열로 받는 가변 인자 함수가 돼요. 인자는 기본적으로 값으로 전달되고, 매개변수 선언에 &를 붙이면 참조로 전달할 수 있어요. 또 기본값을 지정하면 인자를 생략해도 돼요.
function sum(...$numbers) {
return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 10
반환값과 타입 선언
매개변수와 반환값에 타입을 선언할 수 있어요. PHP 8부터는 유니언 타입 int|string 같은 표현도 가능하고, ?int처럼 null 허용 표기도 써요.
function greet(string $name): string {
return "Hello, $name!";
}
익명 함수와 화살표 함수
이름 없이 바로 쓰는 함수도 있어요. 익명 함수(클로저)는 function 키워드로 만들고, 짧게 쓸 때는 화살표 함수 fn 문법을 사용해요.
$multiply = fn($x, $y) => $x * $y;
echo $multiply(3, 4); // 12
변수 함수와 일급 콜러블
변수에 저장된 문자열 이름으로 함수를 호출하는 변수 함수와, PHP 8.1부터 도입된 **일급 콜러블 문법(First-class callable syntax)**이 있어요. 함수를 값처럼 다뤄 콜백으로 넘길 수 있어요.
// 일급 콜러블: 함수를 값으로
$trim = strlen(...);
echo $trim("hello"); // 5
콜백은 array_map() 같은 함수에 넘겨서 배열의 각 원소를 처리하는 패턴으로 특히 자주 활용해요.