国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP中作用域的實現原理

kviccn / 2201人閱讀

摘要:每種程序語言都有自己的作用域實現,的作用域是怎么實現的呢先看一段代碼。那在底層是怎么實現這樣的效果的引擎本身有結構,該結構中的是全局符號表,其中保存了頂層作用域的變量也就是全局變量。那局部變量呢其實每個函數都有一個自己的符號表。

每種程序語言都有自己的作用域實現,php的作用域是怎么實現的呢?
先看一段php代碼。

$bar = "out";

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

scope();

這段代碼的輸出很簡單:

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

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

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31882.html

相關文章

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

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

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

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

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

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

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

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

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

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

    scq000 評論0 收藏0

發表評論

0條評論

kviccn

|高級講師

TA的文章

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