5G云站长网
站长资源基地

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
赞(0) 打赏
未经允许不得转载:5G云源码分享网 » php变量作用域的用法介绍(代码)

评论 抢沙发

评论前必须登录!

 

5G云源码 更专业 更方便

关于5G云联系我们

觉得能帮助你就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏