>백엔드 개발 >PHP 튜토리얼 >PHP7 커널 분석 4 지역 변수, 전역 변수, 상수

PHP7 커널 분석 4 지역 변수, 전역 변수, 상수

不言
不言원래의
2018-04-13 14:58:262213검색

이 글의 내용은 PHP7 Kernel Analysis 4의 지역변수, 전역변수, 상수에 대한 내용입니다. 이제 필요하신 분들이 참고하시면 좋을 것 같습니다.

1. 지역변수

지역변수 할당 PHP zend_execute_data 구조에서 zend_op_array를 실행할 때마다 새로운 zend_execute_data가 생성됩니다. 로컬 변수는 실행 시작 시 할당되고 실행이 끝나면 해제됩니다.
읽기 및 쓰기 작업: 로컬 변수는 컴파일 시간에 결정된 숫자를 통해 읽고 씁니다


2. 정적 변수

정적 변수의 저장 위치: zend_op_array->static_variables, 이는 해시입니다. 따라서 PHP의 정적 변수는 일반 로컬 변수와 달리 zend_execute_data 실행 공간에 할당되지 않고 해시 테이블 형태로 zend_op_array에 저장됩니다. 정적 변수는 한 번만 초기화됩니다. 참고: 초기화는 실행 단계가 아닌 컴파일 단계에서 발생합니다. 또한 이 기능은 정적 변수의 초기 값이 다음과 같은 변수일 수 없음을 의미합니다. static $count = $xxx; 이러한 정의는 오류를 발생시킵니다
읽기 및 쓰기 작업: 먼저 변수 이름에 따라 static_variables에서 해당 zval을 가져온 다음 이를 참조 유형으로 수정하고 지역 변수에 할당합니다. 즉, static $count = 4; 엄밀히 말하면 $count 두 가지 작업이 포함되어 있습니다. 이는 실제 정적 변수가 아니며, 실행 시 실제 작업은 다음과 같습니다. $count = & static_variables["count"] ;

PHP7 커널 분석 4 지역 변수, 전역 변수, 상수


3. 전역 변수

전역 변수는 전체 요청 실행 중에 항상 존재하며 EG의 기호_테이블(executor_globals, Zend 실행기 관련 전역 변수)에 저장됩니다. 정적 변수 저장, 이는 zend_execute_ex 실행이 시작되기 전의 해시 테이블이기도 합니다.
읽기 및 쓰기 작업: 정적 변수 액세스와 마찬가지로 전역 변수도 원본을 변환합니다. 값을 참조로 지정한 다음 가져온 범위에 전역 변수를 만듭니다. 로컬 변수는 참조

PHP7 커널 분석 4 지역 변수, 전역 변수, 상수

4를 가리킵니다. 상수는 EG의 zend_constants 해시 테이블에 저장됩니다. . 접속 시 상수 이름

typedef struct _zend_constant {
    zval value;   //常量值
    zend_string *name; //常量名
} zend_constant;

에 따라 해시 테이블에서도 직접 검색됩니다. 관련 추천:

PHP7 커널 분석 1 CGI 및 FastCGI

PHP7 커널 분석 2 I/O 모델

PHP7 커널 분석 3 변수

                 

위 내용은 PHP7 커널 분석 4 지역 변수, 전역 변수, 상수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.