成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 變量作用域

CoreDump / 1377人閱讀

摘要:以下為中的各種變量在底層實現(xiàn)中是如何存儲的。變量方法常量類名保存在的時候的是不區(qū)分大小寫的,但是類名字本身在中還是有大小寫的小寫保持原樣

以下為 PHP 中的各種變量在底層實現(xiàn)中是如何存儲的。

變量:
$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 是不區(qū)分大小寫的,但是類名字本身在 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

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/29543.html

相關文章

  • 【In PHP】析構、作用與引用

    摘要:在編寫一段析構方法的研究代碼中,我遇到了交叉知識點導致的錯誤在不同作用域,析構方法與引用次數(shù)導致了不一樣的結果。前提本文假裝你已經(jīng)明白什么是析構方法作用域及引用次數(shù)。當析構函數(shù)的調(diào)用鉤子去檢測引用數(shù)時,全局的實例自然無法觸發(fā)這個事件。 在編寫一段析構方法的研究代碼中,我遇到了交叉知識點導致的錯誤——在不同作用域,析構方法與引用次數(shù)導致了不一樣的結果。 前提 本文假裝你已經(jīng)明白什么是析構...

    fai1017 評論0 收藏0
  • PHP 學習總結之變量

    摘要:小駝峰法大駝峰法匈牙利命名法變量名屬性類型對象描述。是一種弱類型語言,變量在使用之前并不需要聲明類型,且同一變量可以保存多種不同類型的數(shù)據(jù)。另外,在函數(shù)內(nèi)部創(chuàng)建的靜態(tài)變量是無法在函數(shù)外部使用的。 變量標識符 標識符即是變量的名稱,PHP 中關于變量的標識符有以下規(guī)則: 由任意字母、數(shù)字、下劃線組成,但不能以數(shù)字開頭 嚴格區(qū)分大小寫 為了科學規(guī)范標識符,主要有以下幾種流行的命名方式:...

    bitkylin 評論0 收藏0
  • PHP作用的實現(xiàn)原理

    摘要:每種程序語言都有自己的作用域?qū)崿F(xiàn),的作用域是怎么實現(xiàn)的呢先看一段代碼。那在底層是怎么實現(xiàn)這樣的效果的引擎本身有結構,該結構中的是全局符號表,其中保存了頂層作用域的變量也就是全局變量。那局部變量呢其實每個函數(shù)都有一個自己的符號表。 每種程序語言都有自己的作用域?qū)崿F(xiàn),php的作用域是怎么實現(xiàn)的呢? 先看一段php代碼。 $bar = out; function scope(){ ...

    kviccn 評論0 收藏0
  • PHP 閉包之變量作用

    摘要:以上結果會輸出那么可以看到被作為了變量通過傳遞給了匿名函數(shù)作為參數(shù)使用如果去掉的注釋,那么以上結果會輸出將上面的函數(shù)改寫為以上結果會輸出說明在中第二次為賦值的時候,并沒有傳遞的到函數(shù)里面去。 ??在項目中,難免會遇到閉包的形式,那么在閉包中,變量的作用域到底是怎么樣的呢。下面有幾個簡單的例子。 e1 function test_1() { $a = php; $func...

    thekingisalwaysluc 評論0 收藏0
  • 理解php變量作用

    摘要:作用域是指在一個腳本中某個變量可以使用或可見的范圍。具有項基本的作用域規(guī)則內(nèi)置超級全局變量可以在腳本的任何地方使用和可見。在一個腳本中聲明的全局變量在整個腳本中是可見的,函數(shù)內(nèi)部除外。 作用域是指在一個腳本中某個變量可以使用或可見的范圍。 php具有6項基本的作用域規(guī)則: 內(nèi)置超級全局變量可以在腳本的任何地方使用和可見。 常量,一旦被聲明,將可以在全局可見;也就是說,它們可以在函數(shù)...

    cpupro 評論0 收藏0
  • 閱讀筆記分享:代碼重寫和函數(shù)編寫

    摘要:和函數(shù)幾乎是相同的,二者的區(qū)別在于函數(shù)失敗后,函數(shù)將給出一個致命錯誤,而函數(shù)只是給出一個警告。關鍵字將終止函數(shù)的執(zhí)行。很多情況下,遞歸可以取代循環(huán),但是遞歸函數(shù)比循環(huán)慢而且要占用更多內(nèi)存。 筆記內(nèi)容來源于《PHP和MySql Web開發(fā)》 一,代碼重用的好處:1.可以降低成本;2.增加代碼的可靠性;3.提高他們的一致性。 二,使用require()和include()函數(shù):1.使用一條...

    wanghui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<