PHP에서 함수의 매개변수(Parameter)는 함수에 전달되는 값을 처리하는 데 사용됩니다. 매개변수를 사용하면 함수의 동작을 동적으로 변경할 수 있습니다. PHP 함수의 매개변수에는 다양한 옵션과 기능이 포함되어 있습니다.
1. 기본 매개변수
PHP 함수는 매개변수를 통해 값을 받을 수 있습니다.
매개변수는 함수 선언부에서 정의되며, 함수 호출 시 해당 값이 전달됩니다.
function greet($name) {
echo "Hello, $name!";
}
greet("John"); // 출력: Hello, John!
2. 기본값 설정 (Default Parameters)
함수의 매개변수에 기본값을 설정하면 호출 시 값을 전달하지 않아도 됩니다. 기본값이 설정된 매개변수는 함수 호출 시 값이 제공되지 않을 경우 사용할 값을 정의합니다.
function greet($name = "Guest") {
echo "Hello, $name!";
}
greet(); // 출력: Hello, Guest!
greet("John"); // 출력: Hello, John!
규칙
1. 기본값이 설정된 매개변수는 반드시 뒤쪽에 위치해야 합니다.
function example($a = 1, $b) { } // 오류 발생!
2. 기본값은 상수, 배열, null 등의 값을 사용할 수 있습니다.
3. 다중 매개변수 (Multiple Parameters)
PHP 함수는 여러 개의 매개변수를 가질 수 있습니다.
function add($a, $b) {
return $a + $b;
}
echo add(3, 5); // 출력: 8
4. 가변 매개변수 (Variable-length Arguments)
PHP에서는 함수가 받을 매개변수의 개수를 고정하지 않고 가변적으로 설정할 수 있습니다. 이를 위해 **... (스프레드 연산자)**를 사용합니다.
function sum(...$numbers) {
return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 출력: 10
동작 방식
1. **...$numbers**는 함수 호출 시 전달된 모든 값을 배열로 변환합니다.
2. 매개변수 리스트에서 ...는 마지막에만 사용 가능합니다.
function mix($a, $b, ...$others) {
print_r($others);
}
mix(1, 2, 3, 4, 5);
// 출력: Array ( [0] => 3 [1] => 4 [2] => 5 )
5. 타입 선언 (Type Hinting)
PHP 7.0부터 함수 매개변수에 타입 선언(Type Hinting)을 사용할 수 있습니다. 이는 함수가 특정 타입의 값을 받을 것을 명시합니다.
지원 타입
1. 스칼라 타입: int, float, string, bool
2. 객체 타입: 특정 클래스나 인터페이스
3. 배열 타입: array
4. 콜러블 타입: callable
5. 혼합 타입 (PHP 8.0+): mixed
// 스칼라 타입
function calculateArea(int $width, int $height): int {
return $width * $height;
}
echo calculateArea(5, 10); // 출력: 50
주의
- PHP는 기본적으로 느슨한 타입 체크를 하지만, 타입 선언이 추가되면 엄격한 타입 체크를 수행합니다.
- PHP 7.4부터 **?**를 사용하여 nullable 타입을 선언할 수 있습니다.
function greet(?string $name) {
echo "Hello, " . ($name ?? "Guest");
}
greet(null); // 출력: Hello, Guest
6. 값에 의한 전달 (Pass by Value)
PHP의 기본 매개변수 전달 방식은 값에 의한 전달입니다. 함수가 호출될 때 매개변수의 복사본이 생성되며, 원래 변수는 함수의 영향을 받지 않습니다.
function increment($value) {
$value++;
}
$num = 10;
increment($num);
echo $num; // 출력: 10 (원래 값은 변경되지 않음)
7. 참조에 의한 전달 (Pass by Reference)
& 연산자를 사용하여 매개변수를 참조로 전달하면 함수가 원래 변수에 직접 접근합니다.
function increment(&$value) {
$value++;
}
$num = 10;
increment($num);
echo $num; // 출력: 11 (원래 값이 변경됨)
사용 시 주의
- 참조를 사용하는 경우 원래 변수의 값을 변경할 위험이 있으므로 주의해야 합니다.
- 참조를 반환하는 함수와 혼동하지 않도록 해야 합니다.
8. 매개변수와 배열
PHP 함수는 배열을 매개변수로 받을 수 있습니다.
function printArray(array $arr) {
foreach ($arr as $item) {
echo $item . " ";
}
}
printArray([1, 2, 3]); // 출력: 1 2 3
9. 익명 함수의 매개변수
익명 함수(클로저)도 매개변수를 정의할 수 있습니다.
$greet = function($name) {
return "Hello, $name!";
};
echo $greet("John"); // 출력: Hello, John!
10. 콜백 함수와 매개변수
콜백 함수는 다른 함수의 매개변수로 전달되어 실행될 수 있습니다.
function processData(array $data, callable $callback) {
foreach ($data as $item) {
echo $callback($item) . " ";
}
}
processData([1, 2, 3], function($n) {
return $n * 2;
});
// 출력: 2 4 6
11. PHP 8.0 - 이름 있는 인자 (Named Arguments)
PHP 8.0부터 함수 호출 시 매개변수 이름을 지정하여 값을 전달할 수 있습니다.
function greet($name, $greeting = "Hello") {
echo "$greeting, $name!";
}
greet(name: "John", greeting: "Hi"); // 출력: Hi, John!
장점
- 매개변수 순서와 상관없이 값을 전달 가능.
- 가독성 향상.
12. 가변 매개변수와 스프레드 연산자 (...)
PHP 8.0에서는 함수 호출 시 배열을 스프레드 연산자로 풀어서 전달할 수 있습니다.
function sum($a, $b, $c) {
return $a + $b + $c;
}
$args = [1, 2, 3];
echo sum(...$args); // 출력: 6
요약
- 매개변수는 함수의 동적 동작을 정의하며, 기본값, 참조, 가변 길이, 타입 선언 등을 통해 다양하게 활용할 수 있습니다.
- 최신 PHP 기능(PHP 7.0+, 8.0+)을 활용하면 함수 정의와 호출이 더욱 간결하고 강력해집니다.
With ChatGPT
'PHP > 포스팅' 카테고리의 다른 글
[PHP] GET 방식 폼 양식의 데이터 처리 (0) | 2024.12.26 |
---|---|
[PHP] POST 방식 폼 양식의 데이터 처리 (0) | 2024.12.25 |
[PHP] 재귀 함수 (0) | 2024.12.01 |
[PHP] [함수] 클로저(Closure) (0) | 2024.12.01 |
[PHP] 익명 함수 (0) | 2024.12.01 |