개발 꿀팁/PHP

PHP 인용자 & 용법 상세 분석

Jammie 2022. 8. 3. 14:31
반응형

php의 인용(변수나 함수, 객체 등 앞에 & 기호를 붙이는 것)의 역할에 대해서는 다음 절차를 살펴본다

<?php
$a = 100; // 변수 a 선언
$b = & $a; // 선언 변수 b, 참조 변수 a
echo"$a < />;
echo"$b />;
$a++;//변수 a자증1
echo"$a < />;
echo"$b <br />>;//변수 b도 보기, 추가1, 동일 메모리 셀을 사용하였음을 설명하다

프로그램 실행 결과:

100   
100   
101   
101

많은 사람들이 php의 인용이 C의 지침과 같다고 오해하지만 실제로는 그렇지 않고 매우 다르다.C언어의 포인터는 배열 전달 과정에서 명시적으로 밝히지 않는 것 외에는 모두 *를 사용하여 정의해야 하며, php에서 주소에 대한 포인터(유사 포인터) 기능은 사용자가 직접 구현한 것이 아니라 Zend 코어에 의해 구현되며, php에서 인용하는 것은 "쓰기 시 복사"의 원리로, 즉 쓰기 조작이 일어나지 않는 한 동일한 주소를 가리키는 변수나 객체는 복사되지 않는다.

php 기본값은 다음과 같습니다

<?php      
 $a = 20;  
 $b = $a;  
 $a = $a + 10;   
 echo $a.' and '.$b;   
 ?>

프로그램 실행 결과:

30 and 20

주소 전달이 되려면 추가 &amp;가 필요합니다

<?php  
 $a = 20;  
 $b = &$a;   
 $a = $a + 10;   
 echo $a.' and '.$b;   
 ?>

프로그램 실행 결과:

30 and 30

즉, $a의 주소를 $b로 전송하면 두 변수는 현재 하나의 메모리 영역을 공유하며, 즉 값은 같다.

함수에서 동일한 구문을 사용할 수 있습니다. 참조를 반환하고 new 연산자에 사용합니다

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

인용이 하는 두 번째 일은 인용을 통해 변수를 전달하는 것이다.이는 함수 내에서 로컬 변수를 만들고, 해당 변수가 통화 범위 내에서 동일한 내용을 인용함으로써 달성된다.통속적으로 말하자면, 함수의 파라미터는 하나의 로컬 변수의 인용이다.다음은 일례

<?php  
 function foo(&$val1, $val2) {  
     $val1 += 1;  
     $val2 += 1;  
 }  
 $a=5;  
 $b=10;  
 foo($a,$b);  
 echo $a;  
 echo $b;  
 ?>

이 코드를 실행하는 것은 함수에 두 개의 인수를 전달하는데, 하나는 $a의 내용을 인용하는 것이고, 하나는 $b의 값을 실행하는 것인데, 이 함수를 실행한 결과 $a의 내용이 바뀐 반면, $b의 내용은 변하지 않았다.

PHP 참조의 세 번째 용법은 참조 반환입니다. 이 용법은 이해하기 어려우며, 참조 반환은 참조가 어떤 변수에 바인딩되어야 하는지 함수를 사용하여 찾을 때 사용됩니다.참조를 반환할 때이 문법:간단하게 말하면 인용함수의 반환이다.다만 파라미터 전달과 달리 함수 정의와 함수 인용 두 곳에 모두 & 기호를 사용해야 한다.다음은 일례

 <?php  
 function &find_var ($param)  
 {  
     /* ...code... */ 
     return $found_var;  
 }  
 $foo =& find_var ($bar);  
 $foo->x = 2;  
 ?>

이 예제에서 $foo에 값을 부여하는 것은 함수 find_var의 반환 참조이므로 $foo->x에 값을 부여하는 것은 단순한 값이 아니라 find_var의 반환 참조에 값을 부여하는 것입니다.

PHP 인용의 마지막 사용법은 인용 위치입니다. 두 가지 응용 프로그램이 있습니다. 하나는 global 참조입니다. global $var로 변수를 선언할 때 실제로 전역으로 이동합니다.변수의 인용. 즉 $var=&$GLOBALS["var"];와 같다.다른 하나는 $this의 용법이며, 하나의 객체의 방법에서 $this는 항상 그것을 호출하는 객체의 참조이다

반응형