php底層--2

來源:互聯網
上載者:User

標籤:

2016-9-25

php的底層是用C語言寫的,C語言是強型別的語言,而php是弱類型的語言,這是怎麼實現的呢?

我們去查詢PHP的源碼可以發現,在源碼的zend檔案夾下,開啟zend.h檔案,找到C語言的結構體struct _zval_struct

struct _zval_struct{

  zvalue_value value;

  zend_uint refcount__gc;

  zend_uchar type;

  zend_uchar is_ref_gc;

}

這個結構體是php底層變數實現的關鍵。

PS:

1 php中的一個變數就是底層一個結構體來描述的。

  在底層中,php的值用zvalue_value value標記,而類型是根據上下文得來的zend_uchar type,zvalue_value是一個union,裡面是C語言的類型,如long,double,

struct str,struct hashtable object等,是枚舉類型,也就是說,一個變數它的類型是根據type定的,而值是根據zvalue_value定的。

如:

$a=3;

表現的C語言中就是一個結構體。

struct{

zvalue_value {long 3}

type IS_LONG

}

 

php底層--2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.