참조에 의한 반환하기는 참조에 연결되어 있는 변수를 찾는 함수를 사용할 때
유용합니다. 참조에 의한 반환을 성능을 증가시키기 위해 사용하지
마십시오. 엔진이 스스로 최적화해 줍니다. 참조를
반환하는건 기술적으로 할 필요가 있을 경우에만 하십시오. 참조를 반환하려면,
다음 문법을 사용합니다:
<?php class foo { public $value = 42;
public function &getValue() { retrun $this->value; } }
$obj = new foo; $myValue = &$obj->getValue(); // $myValue는 $obj->value의 참조로, 42입니다. $obj->value = 2; echo $myValue; // $obj->value의 새 값, 즉 2를 출력합니다. ?>
위 예제 코드는 함수 getvalue에 의해 반환하는
객체의 속성을 설정하지만, 참조 문법을 사용하지 않을 때와 같은
복사가 아니다.
Note:
인수 전달과 달리, 여기서는 두 군데에서 &을
사용해야 한다 - 보통의 복사가 아니라, 참조에 의해 반환하는 것을 가리킬 때,
그리고 일반적인 지정이 아닌 참조 연결이라는 것을 가리킬때,
$myValue에 대해 사용해야 한다.
Note:
다음 문법으로 함수에서 참조를 반환하려 할 수 있습니다:
return ($this->value); 이는 작동하지
않습니다. 변수가 아닌 표현식을
참조로 반환하려고 하는 일이기 때문입니다. 함수에서는 변수만을 참조로
반환할 수 있습니다 - 다른 것은 안됩니다.
PHP4의 PHP 4.4.0부터, PHP5의 PHP 5.1.0부터 코드가 동적 표현식이나
new 연산자의 결과를 반환하려 하면,
E_NOTICE 오류가 발생합니다.