Heim php教程 PHP开发 PHP-Kernel-Analyse (3) – globale Variablen

PHP-Kernel-Analyse (3) – globale Variablen

Dec 19, 2016 am 11:08 AM

Zusammenfassung: Die hier gelesene PHP-Version ist PHP-7.1.0 RC3, und die Plattform zum Lesen des Codes ist Linux. CGCG erhält Attributwerte vom globalen Compiler_global, der im Kompilierungsprozess verwendete globale Variablen speichert. struct _zend_compiler_globals { zend_stack loop_var_stack; zen...

Die hier gelesene PHP-Version ist PHP-7.1.0 RC3, und die Plattform zum Lesen des Codes ist Linux

CG

CG ist Holen Sie sich den Attributwert vom globalen Compiler_global, der die im Kompilierungsprozess verwendeten globalen Variablen speichert.

01    struct _zend_compiler_globals {    
02        zend_stack loop_var_stack;    
03    
04        zend_class_entry *active_class_entry;    
05    
06        zend_string *compiled_filename;    
07    
08        int zend_lineno;    
09    
10        zend_op_array *active_op_array;    
11    
12        HashTable *function_table;    /* function symbol table */    
13        HashTable *class_table;        /* class table */    
14    
15        HashTable filenames_table;    
16    
17        HashTable *auto_globals;    
18    
19        zend_bool parse_error;    
20        zend_bool in_compilation;    
21        zend_bool short_tags;    
22    
23        zend_bool unclean_shutdown;    
24    
25        zend_bool ini_parser_unbuffered_errors;    
26    
27        zend_llist open_files;    
28    
29        struct _zend_ini_parser_param *ini_parser_param;    
30    
31        uint32_t start_lineno; // 执行文件开始执行的行号    
32        zend_bool increment_lineno;    
33    
34        zend_string *doc_comment;    
35        uint32_t extra_fn_flags;    
36    
37        uint32_t compiler_options; /* set of ZEND_COMPILE_* constants */    
38    
39        HashTable const_filenames;    
40    
41        zend_oparray_context context;    
42        zend_file_context file_context;    
43    
44        zend_arena *arena;    
45    
46        zend_string *empty_string;    
47        zend_string *one_char_string[256];    
48        zend_string **known_strings;    
49        uint32_t    known_strings_count;    
50    
51        HashTable interned_strings;    
52    
53        const zend_encoding **script_encoding_list;    
54        size_t script_encoding_list_size;    
55        zend_bool multibyte;    
56        zend_bool detect_unicode;    
57        zend_bool encoding_declared;    
58    
59        zend_ast *ast;    
60        zend_arena *ast_arena;    
61    
62        zend_stack delayed_oplines_stack;    
63    
64    #ifdef ZTS    
65        zval **static_members_table;    
66        int last_static_member;    
67    #endif    
68    };
Nach dem Login kopieren

SG

01    SG是从全局的sapi_global中获取属性值    
02    
03    // TODO:更新    
04    typedef struct _sapi_globals_struct {    
05        void *server_context;    
06        sapi_request_info request_info; // 请求信息    
07        sapi_headers_struct sapi_headers;    
08        int64_t read_post_bytes;    
09        unsigned char post_read;    
10        unsigned char headers_sent;    
11        zend_stat_t global_stat;    
12        char *default_mimetype;    
13        char *default_charset;    
14        HashTable *rfc1867_uploaded_files;    
15        zend_long post_max_size;    
16        int options;    
17        zend_bool sapi_started;    
18        double global_request_time;    
19        HashTable known_post_content_types;    
20        zval callback_func;    
21        zend_fcall_info_cache fci_cache;    
22    } sapi_globals_struct;
Nach dem Login kopieren

EG

EG erhält Variablen von executor_globals

01    // TODO: 更新    
02    struct _zend_executor_globals {    
03        zval uninitialized_zval;    
04        zval error_zval;    
05    
06        /* symbol table cache */    
07        zend_array *symtable_cache[SYMTABLE_CACHE_SIZE];    
08        zend_array **symtable_cache_limit;    
09        zend_array **symtable_cache_ptr;    
10    
11        zend_array symbol_table;        /* main symbol table */    
12    
13        HashTable included_files;    /* files already included */    
14    
15        JMP_BUF *bailout;    
16    
17        int error_reporting;    
18        int exit_status;    
19    
20        HashTable *function_table;    /* function symbol table */    
21        HashTable *class_table;        /* class table */    
22        HashTable *zend_constants;    /* constants table */    
23    
24        zval          *vm_stack_top;    
25        zval          *vm_stack_end;    
26        zend_vm_stack  vm_stack;    
27    
28        struct _zend_execute_data *current_execute_data;    
29        zend_class_entry *fake_scope; /* used to avoid checks accessing properties */    
30    
31        zend_long precision;    
32    
33        int ticks_count;    
34    
35        HashTable *in_autoload;    
36        zend_function *autoload_func;    
37        zend_bool full_tables_cleanup;    
38    
39        /* for extended information support */    
40        zend_bool no_extensions;    
41    
42        zend_bool vm_interrupt;    
43        zend_bool timed_out;    
44        zend_long hard_timeout;    
45    
46    #ifdef ZEND_WIN32    
47        OSVERSIONINFOEX windows_version_info;    
48    #endif    
49    
50        HashTable regular_list;    
51        HashTable persistent_list;    
52    
53        int user_error_handler_error_reporting;    
54        zval user_error_handler;    
55        zval user_exception_handler;    
56        zend_stack user_error_handlers_error_reporting;    
57        zend_stack user_error_handlers;    
58        zend_stack user_exception_handlers;    
59    
60        zend_error_handling_t  error_handling;    
61        zend_class_entry      *exception_class;    
62    
63        /* timeout support */    
64        zend_long timeout_seconds;    
65    
66        int lambda_count;    
67    
68        HashTable *ini_directives;    
69        HashTable *modified_ini_directives;    
70        zend_ini_entry *error_reporting_ini_entry;    
71    
72        zend_objects_store objects_store;    
73        zend_object *exception, *prev_exception;    
74        const zend_op *opline_before_exception;    
75        zend_op exception_op[3];    
76    
77        struct _zend_module_entry *current_module;    
78    
79        zend_bool active;    
80        zend_bool valid_symbol_table;    
81    
82        zend_long assertions;    
83    
84        uint32_t           ht_iterators_count;     /* number of allocatd slots */    
85        uint32_t           ht_iterators_used;      /* number of used slots */    
86        HashTableIterator *ht_iterators;    
87        HashTableIterator  ht_iterators_slots[16];    
88    
89        void *saved_fpu_cw_ptr;    
90    #if XPFPA_HAVE_CW    
91        XPFPA_CW_DATATYPE saved_fpu_cw;    
92    #endif    
93    
94        zend_function trampoline;    
95        zend_op       call_trampoline_op;    
96    
97        void *reserved[ZEND_MAX_RESERVED_RESOURCES];    
98    };
Nach dem Login kopieren

Das Obige ist die PHP-Kernel-Analyse (3) - Inhalt globaler Variablen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

See all articles