매개변수 처리 메커니즘 수정



1. 중복된 매개변수 이름 지정은 더 이상 지원되지 않습니다.

중복 매개변수 이름 지정은 더 이상 지원되지 않습니다. 예를 들어, 다음 코드는 실행 시 오류를 보고합니다.

public function foo($a, $b, $unused, $unused) {
          // ...
}
편집자 주: 누구도 이와 같이 사용해서는 안 됩니다.

2. func_get_arg 및 func_get_args()

func_get_arg() 및 func_get_args() 메서드를 조정하면 전달된 값이 아닌 매개변수의 현재 값이 반환됩니다. 현재 값은 수정될 수 있습니다.

function foo($x) 
{
    $x++;
    var_dump(func_get_arg(0));
}
foo(1);
위 코드는 1 대신 2를 인쇄합니다. 원래 값을 인쇄하려면 호출 순서를 조정하면 됩니다.

3. 예외 추적 정보를 인쇄할 때 수정된 값도 표시됩니다.

function foo($x) 
{
    $x = 42;
    throw new Exception;
}
foo("string");

PHP7的运行结果:Stack trace:
#0 file.php(4): foo(42)
#1 {main}

PHP5的运行结果:Stack trace:
#0 file.php(4): foo('string')
#1 {main}
이 조정은 코드 동작에 영향을 미치지 않지만 디버깅할 때 이 변경 사항에 주의해야 합니다.

debug_backtrace()와 같은 매개변수와 관련된 다른 함수도 동일한 조정을 받습니다.