PHP 매뉴얼
이전 | 14. 장. 참조 표현 | 다음

# 참조는 무엇을 하는가

PHP 참조는 두 변수가 같은 내용을 참조할수 있게 한다. 다음과 같은 일을 한다:

`<?php $a =& $b ?>`

`$a`와 `$b`는 같은 변수를 가리킨다는 것을 의미이다.

> 참고: 여기서 `$a`와 `$b`는 완전히 같다. `$a`는 `$b`를 가리키고, 그 반대일수도 있다. `$a`와 `$b`는 같은 곳을 가리키고 있다.

같은 문법은 함수에도 적용된다. 참조를 돌려받고, `new`연산자와도 함께 쓸수 있다 (PHP 4.0.4 이후 버전부터 유효):

`<?php $bar =& new fooclass(); $foo =& find_var ($bar); ?>`

> 참고: `&` 연산자를 사용하지않으면 생성된 객체의 복사본을 돌려받는다. 그 클래스에서 `$this`를 사용한다면 그것은 클래스의 현재 인스턴스에만 영향을 미친다. `&`가 없는 지정은 인스턴스(즉, 객체)를 복사할것이고 `$this`는 복사본에만 영향을 미칠것이다. 이와 같은 것은 퍼포먼스와 메모리의 효율적인 사용을 위해 오직 하나의 인스턴스만 취급하기를 원할 경우에 사용된다.

> `@new`처럼 생성자에서 발생하는 모든 에러 메시지를 보이지 않게 하기 위해서 `@`연산자를 사용할수 있지만, `&new`구문을 사용할때는 이 연산자는 작동하지 않는다. 이것은 젠드 엔진(Zend Engine)의 한계이고 이런 표현을 쓰면 파싱 에러가 발생한다.

참조가 하는 두번째 일은 참조에 의해 변수를 전달하는 것이다. 이와 같은 것은 함수에서 지역 변수를 만들거나 같은 내용을 참조하는 호출을 사용하는 변수를 생성함으로써 가능해진다. 예를 들면:

`<?php function foo (&$var) { $var++; } $a=5; foo ($a); ?>`

위 코드는 `$a`를 6으로 만들것이다. 이렇게 되는 이유는 `foo`함수 안의 변수 `$var`가 `$a`와 같은 내용을 가리키기 때문이다. 더 자세한 설명을 참조에 의한 전달 섹션에서 볼수 있다.

참조가 하는 세번째 일은 참조에 의해 돌려받기이다.

이전 | 처음으로 | 다음
참조 표현 | 위로 | 참조가 아닌것