PHP에서는 함수 매개변수를 다양한 방법으로 정의하고 전달할 수 있습니다. 일반적인 전송 방법에는 값에 의한 전달, 참조에 의한 전달 및 기본 매개변수 값 설정이 포함됩니다. 다른 전송 방법은 함수 내부와 외부의 변수에 다른 영향을 미칩니다.
값으로 전달하는 것은 PHP의 기본 매개변수 전달 방법입니다. 이 경우 함수는 매개변수 값의 복사본을 수신하므로 함수 내부의 매개변수를 수정해도 원래 변수에는 영향을 미치지 않습니다.
function sum($a, $b) {
$a += $b;
}
이 예에서 $a를 수정해도 함수 외부의 변수 값은 변경되지 않습니다.
함수 내에서 외부 변수의 값을 직접 수정하려면 참조로 전달을 사용하면 됩니다. 매개변수를 정의할 때 변수 이름 앞에 & 기호를 추가합니다.
function increment(&$a) {
$a++;
}
이렇게 하면 전달된 변수가 함수 내부에서 수정된 후 해당 값이 함수 외부에 직접 반영됩니다.
PHP에서는 함수 매개변수에 대한 기본값을 설정할 수 있습니다. 함수를 호출할 때 해당 매개변수가 전달되지 않으면 시스템은 자동으로 기본값을 사용합니다.
function greet($name = "World") {
echo "Hello, $name!";
}
Greeting() 이 실행되면 "Hello, World!" 출력됩니다; Greeting("Alice") 이 실행되면 "Hello, Alice!" 출력됩니다.
PHP 7부터 함수 매개변수의 유형을 선언하여 들어오는 매개변수의 데이터 유형을 제한할 수 있습니다. 일반적인 유형은 다음과 같습니다.
function formatDate(DateTime $date) {
// 오른쪽 DateTime 오른쪽象进行操作
}
function avg(int $a, int $b): float {
return ($a + $b) / 2;
}
위 코드에서 formatDate() 함수는 매개변수가 DateTime 유형이어야 하는 반면 avg() 함수는 매개변수를 정수 유형으로 제한하고 반환 값은 부동 소수점 숫자입니다.
function doubleValue($value) {
$value *= 2;
}
$x = 10;
doubleValue($x); // $x 변하지 않을 것이다,값으로 전달하기 때문에
echo $x; // 산출 10
function doubleValueByRef(&$value) {
$value *= 2;
}
doubleValueByRef($x); // $x 수정됩니다,참조로 전달하기 때문에
echo $x; // 산출 20
위의 비교에서 참조로 전달하면 함수가 외부 변수를 직접 수정할 수 있으며, 이는 변수 상태를 동기식으로 업데이트해야 하는 시나리오에 매우 적합하다는 것을 알 수 있습니다.
PHP 함수의 매개변수 전달 방법과 유형 선언 메커니즘은 개발자에게 유연하고 강력한 함수 정의 기능을 제공합니다. 값별 전달, 참조별 전달 및 유형 선언을 올바르게 사용하면 코드 유지 관리 가능성이 향상될 뿐만 아니라 런타임 오류가 줄어들고 전반적인 코드 품질이 향상됩니다.