2009-07-08 3 views

답변

7

개체 만 참조로 전달됩니다.

PHP가 copy-on-write를 사용하기 때문에 참조로 변경하면 성능이 향상되는 것은 아닙니다. 따라서 변수를 수정하면 사본이 만들어집니다.

코드를 함수로 분할해도 그 점에서 속도가 떨어지지는 않습니다. 함수를 호출하는 데 약간의 오버 헤드가 있지만, 10,000 개를 호출하는 루프에서 걱정하지 않아도되는 것이 아닌 한.

+2

개체는 참조로 전달되지 않습니다. 객체는 참조 유형이지만 다른 값을 지정하지 않으면 함수 매개 변수로 값에 의해 전달됩니다. – Joseph

+0

기술적으로는 참조로 전달되지 않지만 충분히 근접합니다. 이것은 PHP 5부터 마찬가지입니다 - PHP 4는 다릅니다. – Greg

1

예 (매개 변수 앞에 앰퍼샌드 &을 사용하여) 참조로 전달할 함수를 명시 적으로 정의하거나 인수 앞에 앰퍼샌드가있는 함수를 호출하지 않으면 프리미티브가 전달됩니다. (후자는 더 이상 사용되지 않음)

자세한 내용은 this part of the documentation을 참조하십시오. 그것은 종종 대부분의 목적을 위해 그런 식으로 생각 될 수 있지만

편집

또한, PHP에서 "개체 참조에 의해 전달된다"고 성명, 단순화의 비트입니다. 이 chapter of the documentation은 차이점을 설명합니다.

1

참조를 통한 전달은 PHP에서 값을 전달하는 것보다 실제로 느립니다. 이 주장에 대한 올바른 인용문을 찾을 수 없습니다. 그것은 PHP 매뉴얼의 "References"섹션에 있습니다.