php 常量的作用域,PHP 变量作用域

以下为 PHP 中的各种变量在底层实现中是如何存储的。

变量:

$temp = 'temp';

$temp2 = $temp;

// key

p *executor_globals.symbol_table.arData[7].key.val@4

p *executor_globals.symbol_table.arData[8].key.val@4

// value

p *executor_globals.symbol_table.arData[7].val.value.zv.value.str.val@4

p *executor_globals.symbol_table.arData[8].val.value.zv.value.str.val@4

$temp = 'temp';

$temp2 = &$temp;

// value

p *executor_globals.symbol_table.arData[7].val.value.zv.value.ref.val.value.str.val@4

p *executor_globals.symbol_table.arData[8].val.value.zv.value.ref.val.value.str.val@4

方法:

function test(){

$temp = 'temp';

static $test = 'test';

}

// function name

p *executor_globals.function_table.arData[924].key.val@4

// function body

p *executor_globals.function_table.arData[924].val.value.func

// function temp variable key

p *executor_globals.function_table.arData[924].val.value.func.op_array.vars[0].val@4

// function temp variable value

p *executor_globals.function_table.arData[924].val.value.func.op_array.literals[0].value.str.val@4

// function static variable key

p *executor_globals.function_table.arData[924].val.value.func.op_array.static_variables.arData[0].key.val@2

// function static variable value

p *executor_globals.function_table.arData[924].val.value.func.op_array.static_variables.arData[0].val.value.ref.val.value.str.val@4

常量:

// php

define('AA', 'aa');

// key

p *executor_globals.zend_constants.arData[849].key.val@2

// value

p *executor_globals.zend_constants.arData[849].val.value.zv.value.str.val@2

class:

// php

class Apple{

public $a = 'avalue';

public $a2 = 'avalue';

public static $b = 'bvalue';

public static $b2 = 'bvalue';

const E = 'evalue';

const F = 'fvalue';

public function test(){

$c = 'cvalue';

vr_dump($this->a, $c);

}

public static function test2(){

$d = 'dvalue';

vr_dump(self::$b, $d);

}

}

$obj = new Apple();

$obj->test();

Apple::test2();

// class name 类名保存在class_table的时候的 key 是不区分大小写的,但是类名字本身在 class_entry 中还是有大小写的

p *executor_globals.class_table.arData[153].key.val@5 // 小写

p *executor_globals.class_table.arData[153].val.value.ce.name.val@5 // 保持原样

// class body

p *executor_globals.class_table.arData[153].val.value.ce

// class protetry key

p *executor_globals.class_table.arData[153].val.value.ce.properties_info.arData[0].key.val@2

// class protetry value

p *executor_globals.class_table.arData[153].val.value.ce.default_properties_table.value.str[0].val@6

// class static protetry value

p *executor_globals.class_table.arData[153].val.value.ce.default_static_members_table.value.str[0].val@6

// class constanct name

p *executor_globals.class_table.arData[153].val.value.ce.constants_table.arData[0].key

// class constanct value

p *executor_globals.class_table.arData[153].val.value.ce.constants_table.arData[0].val.value.zv.value.str.val@6

// class function name

p *executor_globals.class_table.arData[153].val.value.ce.function_table.arData[0].key.val@4

// class function body

p *executor_globals.class_table.arData[153].val.value.ce.function_table.arData[0].val.value.func

// class function temp variable

p *executor_globals.class_table.arData[153].val.value.ce.function_table.arData[0].val.value.func.op_array.vars[0].val

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值