亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP 變量作用域

CoreDump / 1442人閱讀

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

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

變量:
$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的時(shí)候的 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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29543.html

相關(guān)文章

  • 【In PHP】析構(gòu)、作用與引用

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

    fai1017 評(píng)論0 收藏0
  • PHP 學(xué)習(xí)總結(jié)之變量

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

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

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

    kviccn 評(píng)論0 收藏0
  • PHP 閉包之變量作用

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

    thekingisalwaysluc 評(píng)論0 收藏0
  • 理解php變量作用

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

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

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

    wanghui 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<