> 백엔드 개발 > PHP 튜토리얼 > PHP_php 팁에서 참조 유형을 반환하는 방법

PHP_php 팁에서 참조 유형을 반환하는 방법

WBOY
풀어 주다: 2016-05-16 20:18:34
원래의
986명이 탐색했습니다.

참조를 반환하며, 정의하거나 호출할 때 &는 생략할 수 없습니다.

이것은 특별한 이유가 없는 한 비교적 혼란스러운 개념이므로 사용하지 않는 것이 좋습니다.

PHP5에서는 Reference의 변경으로 인해 혼동되기 쉽고, 이로 인해 PHP4/PHP5에서는 상대적으로 동작의 차이가 크다고 합니다.

예를 들어주세요:

코드 복사 코드는 다음과 같습니다.


$color = '노란색';

함수 &getRef() {
전역 $color;
$color 반환;
}

함수 getCopy() {
전역 $color;
$color 반환;
}

$colorRef = &getRef();
$colorRef = '파란색';

//$colorCopy = getCopy();
//$colorCopy = '검정색';


var_dump($color);
var_dump($colorRef);
//var_dump($colorCopy);

위 코드를 실행하면 &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: 참조를 반환해도 성능이 향상되지는 않지만 때로는 성능이 저하될 수 있으므로 프로그램을 "최적화"하기 위해 이 기능을 사용하는 것을 당연하게 여기지 마십시오.

질문이 있는 경우 일반적으로 설명서를 읽으면 답을 찾을 수 있습니다.

http://cn.php.net/manual/en/언어.references.php

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿