정보를 전달해야하는 기능이 있습니다. 정보는 객체 내에 포함됩니다. 그러므로 나는 그 객체를 함수 인자들 중 하나로 전달해야한다. 그러나 객체는 매우 큽니다. 전달할 때마다 사본을 만드는 데 소요되는 오버 헤드를 줄이고 싶습니다. 여기에 의 예입니다 내 함수를 호출 :참조 만 사용하고 PHP에서 객체 인수의 복사본을 만들지 마십시오
1 myFunction($myObject1);
및 기능 : I보다 PHP에서 그것은 더이 이해
2 function myFunction($myObject2){
3 //do stuff
4 }
단지 통과에 의해 참조 대 통과에 의한 값 . 내가 틀렸다면 나를 바로 잡아라.하지만 나는 1 행에 객체에 대한 참조 만 있다고 믿지만, 2 행에는 객체가 복사된다. 이 사본을 피하기 위해 ($myObject2)
을 (&$myObject2)
으로 바꿨습니다. 나는 여전히 함수 정의 내의 객체를 $myObject2
으로 참조하고 모든 것이 작동하는 것 같다. 저는 현재 참조만을 사용하고 있으므로 객체의 사본을 만들지 않는다고 생각합니다 (이것이 내 목표였습니다). 내 생각이 맞습니까? 이유가 아니라면?
그래서 나는 여전히 전체적으로 혼란 스럽지만, 이것이 의미하는 것 같습니다 : 1)'&'를 추가하면이 경우에는 전혀 없습니다. 2) 거대한 물건을 여러 번 앞뒤로 여러 번 통과 시키면 특별한 오버 헤드없이 매우 낮은 오버 헤드가 발생합니다. – VoltzRoad
@VoltzRoad : 2는 정확합니다. 객체를 전달할 수 없기 때문에 객체에 대한 포인터 만 전달 (또는 할당 또는 처리)하기 때문입니다. 1은 사실이 아닙니다. '&'를 추가하면 참조로 전달됩니다. '&'가 없으면 값으로 전달됩니다. – newacct