참조를 반환하며, 정의하거나 호출할 때 &는 생략할 수 없습니다.
이것은 특별한 이유가 없는 한 비교적 혼란스러운 개념이므로 사용하지 않는 것이 좋습니다.
PHP5에서는 Reference의 변경으로 인해 혼동되기 쉽고, 이로 인해 PHP4/PHP5에서는 상대적으로 동작의 차이가 크다고 합니다.
예를 들어주세요:
위 코드를 실행하면 &getRef()를 사용하면 $colorRef를 $color에 바인딩한다는 사실을 거의 이해할 수 있습니다. 즉, 두 변수 $colorRef와 $color가 동일한 값을 가리킨다는 의미입니다. 값 중 하나를 변경하면 다른 값도 변경됩니다.
$color가 배열인 경우 위 코드는 모든 PHP4/5 버전에서 동일하게 작동합니다.
$color가 객체일 때 문제가 발생합니다.
PHP4에서 getCopy는 여전히 복사된 객체를 반환합니다. &getRef()는 참조를 반환합니다.
PHP5는 좀 다릅니다.
최신 PHP5.2는 PHP4와 동일하게 작동합니다. getCopy()는 복사본을 반환하고 &getRef()는 참조를 반환합니다.
그러나 getCopy() 및 &getRef()가 모두 참조임을 보여주는 PHP5.1.6과 같은 일부 PHP5 버전은 여기서 약간 다릅니다.
여기서 getCopy()와 &getRef()는 두 개의 전역 함수입니다. 클래스에 배치되어 클래스의 멤버 함수가 된다면 이야기가 달라집니다...
PS: 참조를 반환해도 성능이 향상되지는 않지만 때로는 성능이 저하될 수 있으므로 프로그램을 "최적화"하기 위해 이 기능을 사용하는 것을 당연하게 여기지 마십시오.
질문이 있는 경우 일반적으로 설명서를 읽으면 답을 찾을 수 있습니다.