成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP中作用域的實現(xiàn)原理

kviccn / 2258人閱讀

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

每種程序語言都有自己的作用域?qū)崿F(xiàn),php的作用域是怎么實現(xiàn)的呢?
先看一段php代碼。

$bar = "out";

function scope(){
    $bar = "inner";
    echo $bar."<
>";
}

scope();

這段代碼的輸出很簡單:

root@forse:~/learn$ php a.php 
inner

為什么會是這樣的輸出,我相信只要稍微懂點(diǎn)php或者編程的人就明白。那在php底層是怎么實現(xiàn)這樣的效果的?
Zend引擎本身有_zend_executor_globals結(jié)構(gòu),該結(jié)構(gòu)中的symptom_table是全局符號表,其中保存了頂層作用域的變量也就是全局變量。但程序需要使用全局變量的時候舊在這個符號表中遍歷。
那局部變量呢?其實每個函數(shù)都有一個自己的符號表activity_symptom_table。每個函數(shù)的符號表都是相互獨(dú)立的。
在php中,執(zhí)行環(huán)境是在_zend_execute_data中,在執(zhí)行某個函數(shù)時,全局中的_zend_executor_globals中的activity_symptom_table指向當(dāng)前的_zend_execte_data中的symptom_table,以后所有函數(shù)執(zhí)行過程中的變量修改都是在新的symptom_table中修改,不會影響全局的變量,也讀不到全局的變量,但函數(shù)執(zhí)行完成后,php在將原來的execute_data恢復(fù),恢復(fù)到全局變量,這樣就實現(xiàn)了全局變量和局部變量的互換。

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/31882.html

相關(guān)文章

  • 2018年騰訊前端一面總結(jié)(面向2019屆學(xué)生)

    摘要:前言騰訊一面,相比阿里一面來說,騰訊一面先給打電話預(yù)定時間,這也給了我們這些面試者去準(zhǔn)備的時間。其實閉包也就是指有權(quán)訪問另一個函數(shù)作用域的函數(shù)而已。常用的創(chuàng)建閉包的方法就是在函數(shù)內(nèi)部創(chuàng)建另一個函數(shù)。 前言 騰訊一面,相比阿里一面來說,騰訊一面先給打電話預(yù)定時間,這也給了我們這些面試者去準(zhǔn)備的時間。但是也正是因為這種確定性,也有在等待電話的時候的心情的忐忑。 背景 我是一名大三學(xué)生,大一...

    Kosmos 評論0 收藏0
  • php底層原理之變量(一)

    摘要:對于來說,變量有全局變量和局部變量之分那么,他們都是存儲到一個哈希表內(nèi)了么其實不是的,變量存儲也有作用域的概念。 上次跟大家講了垃圾回收機(jī)制后,有些小伙伴對底層原理比較感興趣,私信問我了一些關(guān)于變量的相關(guān)知識,既然大家對變量比較感興趣,那么這次我們來系統(tǒng)的講一下變量的底層原理 變量結(jié)構(gòu) 首先,我們還是先擺上我們的zval結(jié)構(gòu)體,即php所有變量都會以zval結(jié)構(gòu)體的形式實現(xiàn) struc...

    curlyCheng 評論0 收藏0
  • PHP筆試面試題精選(一)

    摘要:,跨站腳本攻擊。實際發(fā)的請求就是,用于表示這是一個請求。,用于告知服務(wù)器根據(jù)這個參數(shù)獲取回調(diào)函數(shù)的名稱,通常約定就叫。,回調(diào)函數(shù)的名稱,也是前面參數(shù)的值,可省略,會自動生成。 本次課程主要圍繞 PHP 面試和筆試中經(jīng)常會出現(xiàn)的一些知識點(diǎn),但是面試官會在筆試題基礎(chǔ)上深入擴(kuò)展,那么你知道如何更好的回答讓面試官滿意嗎?題目收集自騰訊,迅雷,美圖等公司的筆試面試題,以及本人面試經(jīng)歷中印象中的知...

    JohnLui 評論0 收藏0
  • 前端進(jìn)擊的巨人(三):從作用域走進(jìn)閉包

    摘要:進(jìn)擊的巨人第三篇,本篇就作用域作用域鏈閉包等知識點(diǎn),一一擊破。在此我們遵照的方式,暫且稱是閉包。所以,一名合格的前端,除了會用閉包,還要正確的解除閉包引用。 進(jìn)擊的巨人第三篇,本篇就作用域、作用域鏈、閉包等知識點(diǎn),一一擊破。 showImg(https://segmentfault.com/img/bVburWd?w=1280&h=854); 作用域 作用域:負(fù)責(zé)收集并維護(hù)由所有聲明的...

    Vicky 評論0 收藏0
  • jsonp 跨域原理分析

    摘要:為請求指定一個回調(diào)函數(shù)名。這主要用來讓生成一個獨(dú)特的函數(shù)名,這樣管理請求更容易,也能方便地提供回調(diào)函數(shù)和錯誤處理。在回調(diào)函數(shù)中,通常我們只需通過判斷請求是否完成,如果已完成,再根據(jù)判斷是否是一個成功的響應(yīng)。 本篇文章借鑒自 博客園文章 原文地址 AJAX即Asynchronous Javascript And XML(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的...

    scq000 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<