2010-01-17 7 views
15

고려 :PHP에서 = 및 의미는 무엇입니까?

$smarty =& SESmarty::getInstance(); 

가에 대한 & 무엇입니까?

+2

PHP 도움말 레퍼런스의 "연산자"나 좋은 검색 엔진에서 나중에 이와 같은 것이 필요하다면. –

+1

"Singleton"이라는 이름을 찾아야합니다. – cwallenpoole

답변

24

참고로 전달됩니다. 그것이 전달 된 값의 복사본을 만들지 않는다는 것을 의미합니다.

참조 : http://php.net/manual/en/language.references.php

보통 (참조 아담의 대답), 당신은 이런 식으로 뭔가를 전달하는 경우 :

두 번째 변수를 변경하면 원래의 변수 ( $a)이 수정되지 않습니다
$a = 5; 
$b = $a; 
$b = 3; 

echo $a; // 5 
echo $b; // 3 

($b). 참조로 전달하는 경우 :

$a = 5; 
$b =& $a; 
$b = 3; 

echo $a; // 3 
echo $b; // 3 

원본도 변경됩니다.

기본적으로 참조로 전달되기 때문에 객체를 전달할 때 쓸모가 없습니다.

+5

PHP5 객체는 기본적으로 참조로 전달되지 않습니다. 대신 객체 식별자가 값으로 전달됩니다 (Java의 '참조'의미와 유사). 자세한 내용은 설명서를 참조하십시오 : http://www.php.net/manual/en/language.oop5.references.php – Christoph

+0

고마워요, 지금 나에게 무의미한 것 같습니다 – JasonDavis

+0

정말 일종의 무의미합니다. 사람들이 변수를 사용하는 주된 이유는 변수를 반환하는 함수가 필요 없지만 대신 변수를 수정해야한다는 것입니다. –

5

PHP   4에서 (어색하게) 연관된 두 변수가 있습니다. 이 중 일부가되었다

$j = 'original'; 
$i =& $j; 
$j = 'modified'; 
echo $i; // The output is 'modified' 

마찬가지로

$j = 'original'; 
$i =& $j; 
$i = 'modified'; 
echo $j; // The output is 'modified' 

는 ... 좀 덜 불쾌한 그것은 PHP 5의 개체에 올 때,하지만 난 그것의 마음 같은 생각, 그래서 이러한 예는해야 여전히 유효합니다.

1

References은 변수의 별명을 지정하는 데 사용되며 이전 오브젝트 시스템을 효율적으로 사용하는 데 필요했습니다.

PHP   4에서 개체는 다른 값 형식과 같이 동작합니다. 즉, 할당은 개체의 복사본을 만듭니다. 이를 피하려면 예제 코드에서와 같이 참조를 사용해야합니다.

PHP 5으로 객체 변수는 더 이상 객체 자체를 포함하지 않지만 핸들 (AKA 객체 식별자)과 할당은 핸들 만 복사합니다. 참조를 사용하는 것이 더 이상 필요하지 않습니다.

관련 문제