라이브러리

[PHP] ReflectionParameter::isPassedByReference - 참조로 전달되었는지 확인합니다.




PHP ReflectionParameter 클래스는 PHP 5.3.0 버전부터 사용할 수 있습니다. 이 클래스는 메소드의 매개변수에 대한 정보를 제공합니다.

ReflectionParameter::isPassedByReference


`ReflectionParameter::isPassedByReference` 메소드는 매개변수가 참조로 전달되는지 여부를 확인합니다. 참조로 전달되는 매개변수는 메소드 내에서 전달된 변수의 실제 값을 변경할 수 있습니다.

예제


#hostingforum.kr
php

function test($param1, &$param2) {

    echo "param1: " . $param1 . "
";

    echo "param2: " . $param2 . "
";

}



$reflectionMethod = new ReflectionMethod('test');

$reflectionParameter1 = $reflectionMethod->getParameters()[0];

$reflectionParameter2 = $reflectionMethod->getParameters()[1];



echo $reflectionParameter1->isPassedByReference() ? "true" : "false"; // false

echo "
";

echo $reflectionParameter2->isPassedByReference() ? "true" : "false"; // true



위 예제에서 `test` 함수의 두 번째 매개변수 `$param2`는 참조로 전달되었기 때문에 `isPassedByReference` 메소드는 `true`를 반환합니다. 반면 첫 번째 매개변수 `$param1`은 값으로 전달되었기 때문에 `false`를 반환합니다.

참조로 전달되는 매개변수와 값으로 전달되는 매개변수의 차이


참조로 전달되는 매개변수는 메소드 내에서 전달된 변수의 실제 값을 변경할 수 있습니다. 반면 값으로 전달되는 매개변수는 메소드 내에서 전달된 변수의 실제 값을 변경할 수 없습니다.

#hostingforum.kr
php

function test($param1, &$param2) {

    $param1 = 10;

    $param2 = 20;

}



$param1 = 5;

$param2 = 15;



test($param1, $param2);



echo $param1; // 5

echo "
";

echo $param2; // 20



위 예제에서 `test` 함수의 두 번째 매개변수 `$param2`는 참조로 전달되었기 때문에 메소드 내에서 `$param2`의 실제 값을 변경할 수 있습니다. 반면 첫 번째 매개변수 `$param1`은 값으로 전달되었기 때문에 메소드 내에서 `$param1`의 실제 값을 변경할 수 없습니다.

결론


`ReflectionParameter::isPassedByReference` 메소드는 매개변수가 참조로 전달되는지 여부를 확인할 수 있습니다. 참조로 전달되는 매개변수는 메소드 내에서 전달된 변수의 실제 값을 변경할 수 있습니다. 반면 값으로 전달되는 매개변수는 메소드 내에서 전달된 변수의 실제 값을 변경할 수 없습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 277 페이지

검색

게시물 검색