이 기사에서는 주로 PHP 소스 코드 5에 대해 소개합니다. 배열 배열 생성에 대해 특정 참조 값이 있습니다. 이제는 필요한 친구가 참조할 수 있습니다.
Cli를 사용하여 PHP 디버깅 환경에서 PHP를 실행하세요. 파일
C와 어휘 분석에 익숙하지 않기 때문에 단계별로 코드를 추적합니다.
사용된 PHP 파일은 다음과 같습니다.
<?PHP $a = array(1, 2, 3); var_dump($a);
코드는 다음과 같이 간단히 추적됩니다.
===>php_execute_script(&file_handle TSRMLS_CC); //php_cli.c line1130 ==> retval = (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 3, prepend_file_p, primary_file, append_file_p) == SUCCESS); // main.c 2023行 ==> EG(active_op_array) = zend_compile_file(file_handle, type TSRMLS_CC); // zend.c 1126行 ==> compiler_result = zendparse(TSRMLS_C); // zend_language_scanner.c 3420行==> zend-language_parse.c 2773行==>case 382: { zend_do_init_array(&(yyval), &(yyvsp[(1) - (1)]), NULL, 0 TSRMLS_CC); } // zend_language_parser.c 4689行 ==>void zend_do_init_array(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC) // zend_compile.c 3348行 ==>case 380: { zend_do_add_array_element(&(yyval), &(yyvsp[(3) - (3)]), NULL, 0 TSRMLS_CC); }// zend_language_parser.c 4684行 ==>void zend_do_add_array_element(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC) // zend_compile.c 3371行
코드 추적 과정에서 PHP 소스 코드가 구문 트리를 생성할 때 배열과 첫 번째 숫자에 도달하면 배열과 관련된 작업이 없음을 발견했습니다. 1 뒤의 쉼표를 구문 분석하면 zend_do_init_array 함수가 호출되어 위의 내용은 단지 추적 과정일 뿐입니다. 제 수준이 제한적이어서 어휘 분석 및 구문 분석에 대해 잘 모릅니다.
또 다른: 캐리지 리턴 및 라인 피드가 없는 경우. PHP 프로그램의 마지막 코드 줄 이후에는 소스 코드 파일을 읽을 때 여러 문자가 깨져 있는 것을 볼 수 있습니다.
계속하려면...
이 글은 여기까지입니다. 모든 사람의 연구에 도움이 되기를 바랍니다. 더 많은 관련 내용을 보시려면 PHP 중국어 웹사이트를 주목해주세요!
관련 권장 사항:
PHP 소스 코드 4에 대한 간략한 토론: count 함수에 대해 PHP 소스 코드 3에 대한 간략한 토론: strrchr, strstr, stristr 함수에 대해 간략한 토론 PHP 소스 코드 2: strlen, strtolower , strtoupper, ord, chr 함수 소개위 내용은 PHP 소스 코드 5에 대한 간략한 토론: 배열 배열 생성에 대하여의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!