Dieser Artikel führt hauptsächlich eine kurze Diskussion über den PHP-Quellcode 5 ein: In Bezug auf die Erstellung von Array-Arrays hat er einen gewissen Referenzwert. Jetzt kann ich ihn mit Ihnen teilen
Debuggen in PHP Verwenden Sie cli, um PHP-Dateien in der Umgebung auszuführen
, um den Code Schritt für Schritt zu verfolgen. Da ich mit C und der lexikalischen Analyse nicht vertraut bin
werden folgende PHP-Dateien verwendet:
<?PHP $a = array(1, 2, 3); var_dump($a);
Der Code wird einfach wie folgt verfolgt:
===>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行
Während des Codeverfolgungsprozesses wurde festgestellt, dass beim Erzeugen eines Syntaxbaums durch den PHP-Quellcode beim Auftreffen auf das Array und die erste Zahl keine Array-bezogene Operation erfolgt . Die Funktion zend_do_init_array wird nur aufgerufen, wenn das Komma nach 1 analysiert wird, wodurch ein Array erstellt wird.
Es gibt keine Erklärung für den Code viel über lexikalische Analyse und Syntaxanalyse.
Sonstiges: Wenn nach der letzten Codezeile im PHP-Programm kein Zeilenumbruch erfolgt, werden Sie beim Lesen der Quellcodedatei eine Reihe verstümmelter Zeichen sehen
Fortsetzung folgt...
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Bitte überprüfen Sie weitere verwandte Inhalte. Folgen Sie der chinesischen PHP-Website!
Verwandte Empfehlungen:
Eine kurze Diskussion des PHP-Quellcodes 4: Über die Zählfunktion
Eine kurze Diskussion von PHP-Quellcode 3: Über strrchr, strstr, stristr-Funktion
Eine kurze Diskussion über PHP-Quellcode 2: Über strlen, strtolower, strtoupper, ord, chr-Funktion
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion zum fünften PHP-Quellcode: Über die Erstellung eines Array-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!