首页 / PHP / PHP内核中重要的两个全局变量
PHP内核中重要的两个全局变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP内核中重要的两个全局变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4443字,纯文字阅读大概需要7分钟。
内容图文
![PHP内核中重要的两个全局变量](/upload/InfoBanner/zyjiaocheng/201/ec9723d0b4fb4c2e866067323b5c295c.jpg)
Zend引擎中有两个重要的全局变量结构体,就是Zend引擎关闭之前都会存在的变量:
typedef struct _zend_compiler_globals zend_compiler_globals;typedef struct _zend_executor_globals zend_executor_globals;
/* Compiler */#ifdef ZTS# define CG(v) TSRMG(compiler_globals_id, zend_compiler_globals *, v)int zendparse(void *compiler_globals);#else# define CG(v) (compiler_globals.v)extern ZEND_API struct _zend_compiler_globals compiler_globals;int zendparse(void);#endif/* Executor */#ifdef ZTS# define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v)#else# define EG(v) (executor_globals.v)extern ZEND_API zend_executor_globals executor_globals;#endif
CG 的含义就是 compiler_globals ,Zend编译器相关的全局变量;
EG 的含义就是 executor_globals,Zend执行器相关的全局变量;
这两个结构都包含了很多元素,对理解PHP内核有很重要的意义:
struct _zend_compiler_globals { zend_stack bp_stack; zend_stack switch_cond_stack; zend_stack foreach_copy_stack; zend_stack object_stack; zend_stack declare_stack; zend_class_entry *active_class_entry; /* variables for list() compilation */ zend_llist list_llist; zend_llist dimension_llist; zend_stack list_stack; zend_stack function_call_stack; char *compiled_filename; int zend_lineno; int comment_start_line; char *heredoc; int heredoc_len; zend_op_array *active_op_array; HashTable *function_table; /* function symbol table */ HashTable *class_table; /* class table */ HashTable filenames_table; HashTable *auto_globals; zend_bool in_compilation; zend_bool short_tags; zend_bool asp_tags; zend_bool allow_call_time_pass_reference; zend_declarables declarables; /* For extensions support */ zend_bool extended_info; /* generate extension information for debugger/profiler */ zend_bool handle_op_arrays; /* run op_arrays through op_array handlers */ zend_bool unclean_shutdown; zend_bool ini_parser_unbuffered_errors; zend_llist open_files; long catch_begin; struct _zend_ini_parser_param *ini_parser_param; int interactive; zend_uint start_lineno; zend_bool increment_lineno; znode implementing_class; zend_uint access_type; char *doc_comment; zend_uint doc_comment_len;#ifdef ZEND_MULTIBYTE zend_encoding **script_encoding_list; int script_encoding_list_size; zend_bool detect_unicode; zend_encoding *internal_encoding; /* multibyte utility functions */ zend_encoding_detector encoding_detector; zend_encoding_converter encoding_converter; zend_encoding_oddlen encoding_oddlen;#endif /* ZEND_MULTIBYTE */#ifdef ZTS HashTable **static_members; int last_static_member;#endif};struct _zend_executor_globals { zval **return_value_ptr_ptr; zval uninitialized_zval; zval *uninitialized_zval_ptr; zval error_zval; zval *error_zval_ptr; zend_function_state *function_state_ptr; zend_ptr_stack arg_types_stack; /* symbol table cache */ HashTable *symtable_cache[SYMTABLE_CACHE_SIZE]; HashTable **symtable_cache_limit; HashTable **symtable_cache_ptr; zend_op **opline_ptr; HashTable *active_symbol_table; HashTable symbol_table; /* main symbol table */ HashTable included_files; /* files already included */ jmp_buf *bailout; int error_reporting; int orig_error_reporting; int exit_status; zend_op_array *active_op_array; HashTable *function_table; /* function symbol table */ HashTable *class_table; /* class table */ HashTable *zend_constants; /* constants table */ zend_class_entry *scope; zval *This; long precision; int ticks_count; zend_bool in_execution; HashTable *in_autoload; zend_function *autoload_func; zend_bool full_tables_cleanup; zend_bool ze1_compatibility_mode; /* for extended information support */ zend_bool no_extensions;#ifdef ZEND_WIN32 zend_bool timed_out;#endif HashTable regular_list; HashTable persistent_list; zend_ptr_stack argument_stack; int user_error_handler_error_reporting; zval *user_error_handler; zval *user_exception_handler; zend_stack user_error_handlers_error_reporting; zend_ptr_stack user_error_handlers; zend_ptr_stack user_exception_handlers; /* timeout support */ int timeout_seconds; int lambda_count; HashTable *ini_directives; HashTable *modified_ini_directives; zend_objects_store objects_store; zval *exception; zend_op *opline_before_exception; struct _zend_execute_data *current_execute_data; struct _zend_module_entry *current_module; zend_property_info std_property_info; zend_bool active; void *reserved[ZEND_MAX_RESERVED_RESOURCES];};
内容总结
以上是互联网集市为您收集整理的PHP内核中重要的两个全局变量全部内容,希望文章能够帮你解决PHP内核中重要的两个全局变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。