您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP内核研究 静态变量_PHP教程

2025/6/14 1:41:25发布29次查看
静态变量
它可以是 静态全局变量,如果不调用unset,那么这个静态变量会一直存在,直到程序退出时才由zend内存管理来释放
它可以是 静态局部变量:在函数里定义,函数执行完后,该静态变量不会消失
它可以是 静态成员变量:在类里定义,它可以在所有类的对象中共享
例如
u.constant; 
        } else { 
                init_zval(*tmp); 
        } 
        if (!cg(active_op_array)->static_variables) {//初始化静态变量的hash 键值 
                alloc_hashtable(cg(active_op_array)->static_variables); 
                 //初始化hash值 
                zend_hash_init(cg(active_op_array)->static_variables, 2, null, zval_ptr_dtor, 0); 
        } 
        zend_hash_update(cg(active_op_array)->static_variables, varname->u.constant.value.str.val, varname->u.constant.value.str.len+1, &tmp, sizeof(zval *), null);
if (varname->op_type == is_const) { 
                if (z_type(varname->u.constant) != is_string) { 
                        convert_to_string(&varname->u.constant); 
                } 
        }
opline = get_next_op(cg(active_op_array) tsrmls_cc); 
        opline->result.op_type = is_var; 
        opline->result.u.ea.type = 0; 
        opline->result.u.var = get_temporary_variable(cg(active_op_array)); 
        opline->op1 = *varname; 
        set_unused(opline->op2); 
        opline->op2.u.ea.type = zend_fetch_static; 
        result = opline->result;
if (varname->op_type == is_const) { 
                zval_copy_ctor(&varname->u.constant); 
        } 
        fetch_simple_variable(&lval, varname, 0 tsrmls_cc); /* relies on the fact that the default fetch is bp_var_w */  www.2cto.com
if (fetch_type == zend_fetch_lexical) { 
                znode dummy;
zend_do_begin_variable_parse(tsrmls_c); 
                zend_do_assign(&dummy, &lval, &result tsrmls_cc); 
                zend_do_free(&dummy tsrmls_cc); 
        } else { 
                zend_do_assign_ref(null, &lval, &result tsrmls_cc); 
        } 
        cg(active_op_array)->opcodes[cg(active_op_array)->last-1].result.u.ea.type |= ext_type_unused;
/*      zval_dtor(&varname->u.constant); */ 
}
http://www.bkjia.com/phpjc/477784.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/477784.htmltecharticle静态变量 它可以是 静态全局变量,如果不调用unset,那么这个静态变量会一直存在,直到程序退出时才由zend内存管理来释放 它可以是 静态局部...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product