PHP에서 나는 많은 문자열 조작을 자주하고 있습니다. 내 코드를 여러 함수로 나눠도 괜찮습니까? 문자열과 같은 기본 유형을 값으로 전달하면 성능에 큰 영향을 줄 수 있기 때문입니다.PHP의 원시 데이터 유형이 참조로 전달 되었습니까?
답변
개체 만 참조로 전달됩니다.
PHP가 copy-on-write를 사용하기 때문에 참조로 변경하면 성능이 향상되는 것은 아닙니다. 따라서 변수를 수정하면 사본이 만들어집니다.
코드를 함수로 분할해도 그 점에서 속도가 떨어지지는 않습니다. 함수를 호출하는 데 약간의 오버 헤드가 있지만, 10,000 개를 호출하는 루프에서 걱정하지 않아도되는 것이 아닌 한.
개체는 참조로 전달됩니다. pass-by-reference with the & operator을 명시 적으로 사용하지 않으면 다른 모든 것이 가치에 의해 전달됩니다.
PHP는 불필요한 복사를 피하기 위해 copy-on-write을 사용합니다.
예 (매개 변수 앞에 앰퍼샌드 &
을 사용하여) 참조로 전달할 함수를 명시 적으로 정의하거나 인수 앞에 앰퍼샌드가있는 함수를 호출하지 않으면 프리미티브가 전달됩니다. (후자는 더 이상 사용되지 않음)
자세한 내용은 this part of the documentation을 참조하십시오. 그것은 종종 대부분의 목적을 위해 그런 식으로 생각 될 수 있지만
편집
또한, PHP에서 "개체 참조에 의해 전달된다"고 성명, 단순화의 비트입니다. 이 chapter of the documentation은 차이점을 설명합니다.
기본적으로 모든 것이 값으로 전달됩니다. 참조로 무언가를 전달하려면 명시 적으로 명시해야합니다.
여기는 php documentation that explicitly states this behavior입니다.
참조를 통한 전달은 PHP에서 값을 전달하는 것보다 실제로 느립니다. 이 주장에 대한 올바른 인용문을 찾을 수 없습니다. 그것은 PHP 매뉴얼의 "References"섹션에 있습니다.
- 1. PHP의 객체가 값 또는 참조로 전달 되었습니까? 이 코드
- 2. 참조로 원시 데이터 형식을 전달하는 방법은 무엇입니까?
- 3. "참조로"변수가 업데이트 되었습니까?
- 4. 참조 유형이 참조로 전달되지 않았습니다.
- 5. 원시 HTTP를 통해 POST 데이터 전달
- 6. C++ 참조로 개체 전달?
- 7. 스키마 R5RS : 참조로 전달
- 8. 자바에서 참조로 전달
- 9. 참조로 배열 전달
- 10. 참조로 전달 TCL - 스레딩?
- 11. 참조로 함수에 char ** 전달
- 12. VB.Net에서 참조로 전달
- 13. C 참조로 구조체 전달
- 14. 참조로 전달/저장 하시겠습니까?
- 15. AS3에서 참조로 전달
- 16. 참조로 정수 전달
- 17. 열거 형을 값 또는 참조로 전달 하시겠습니까?
- 18. PHP로 참조로 데이터베이스 연결 전달
- 19. java - 참조로 double 값 전달
- 20. 변수를 참조로 PHP 확장자로 전달
- 21. 구조체 배열을 참조로 함수 전달
- 22. 참조로 자바 스크립트 전달 변수
- 23. 여러 함수를 통해 참조로 전달
- 24. PHP의 특수 문자 전달
- 25. 참조로 전달 된 값을 멤버 변수에 전달 (C++)
- 26. 데이터 유형이 왜 중요합니까?
- 27. XSD - 데이터 유형이 누락되었습니다.
- 28. C# 파일 인코딩 유형이 변경 되었습니까?
- 29. 웹 서비스 참조로 API 호출에 인증 전달
- 30. 여러 벡터를 참조로 함수에 전달 (구조체 사용)
개체는 참조로 전달되지 않습니다. 객체는 참조 유형이지만 다른 값을 지정하지 않으면 함수 매개 변수로 값에 의해 전달됩니다. – Joseph
기술적으로는 참조로 전달되지 않지만 충분히 근접합니다. 이것은 PHP 5부터 마찬가지입니다 - PHP 4는 다릅니다. – Greg