2010-07-27 3 views
2

zval 컨테이너를 사용하는 방법을 보여주는 실용적인 예제를 제안 해 주시겠습니까? 내가 아는 유일한 관련 기능은 debug_zval_dump입니다. 그러나 나는 그것을 사용하지 않았습니다.PHP에서 zval을 사용하는 방법?

편집 :

나는 메모리 참조를 사용하는 방법을 참조, 내가 코드를 최적화하는 방법을 볼 수 zval 컨테이너를 추적, 가정합니다. 어떤 경우에는 유용한 도구가 될 수 있습니다. 확실히 debug_val_dump 기능이 존재하는 좋은 이유가 있습니다.

+0

왜이 작업을 수행 하시겠습니까? –

답변

10

모든 PHP 변수는 zval에 저장되므로 질문이 실제로 이해가 안가는 것을 알 수 있습니다.

debug_val_dump은 해석하기가 쉽지 않으므로 잘 고려 된 기능이 아닙니다. 단순히 함수에 변수를 전달하면 zval의 참조 횟수가 변경됩니다. 참조로 전달하지 않고 debug_val_dump에 대한 참조를 전달하면 zval 분리가 발생하게되고 참조 플래그가 1 인 zval이 참조 플래그 clear로 반환되고 참조로 전달하면 zval이 참조로 전달됩니다 call time, deprecated)에 대한 호출은 원래 출력 이었는지 여부를 출력으로 알 수 없다.

Xdebug는 변수를 전달하지 않는 대신 훨씬 유용한 함수를 가지고 있습니다. 대신 변수 이름을 문자열로 전달합니다. 그것은 xdebug_debug_zval입니다.

참조를 사용하는 코드를 디버깅하지 않고 참조 집합에 속한 변수의 수를 알고 싶지 않다면이 함수는별로 유용하지 않을 수 있습니다.

그들에 대한 이해를 돕기 위해 설명서에서 reference count basics을 읽어 보시기 바랍니다.

+3

"내가하지 않는 한 ..."이 내가 관심있어하는 것입니다. 이 기사는 매우 유익한 것으로 나타났습니다. http://derickrethans.nl/talks/phparch-php-variables-article.pdf – takeshin

3

PHP에서 zval을 실제로 사용할 수 없습니다. 이는 사용자 구현 PHP 코드에서 (일반적으로) 접근 할 수없는 핵심 구현 세부 사항입니다.

관련 문제