php是弱類型還是強(qiáng)類型優(yōu)秀

字號(hào):

    每個(gè)人都曾試圖在平淡的學(xué)習(xí)、工作和生活中寫一篇文章。寫作是培養(yǎng)人的觀察、聯(lián)想、想象、思維和記憶的重要手段。大家想知道怎么樣才能寫一篇比較優(yōu)質(zhì)的范文嗎?以下是小編為大家收集的優(yōu)秀范文,歡迎大家分享閱讀。
    php是弱類型還是強(qiáng)類型篇一
    導(dǎo)語:php是弱類型,動(dòng)態(tài)的語言腳本。在申明一個(gè)變量的時(shí)候,并不需要指明它保存的數(shù)據(jù)類型。下面就由小編為大家介紹一下php弱類型變量是如何實(shí)現(xiàn)的吧,歡迎大家閱讀!
    例如:
    $var=1;
    $var="variable";
    $var=1.00;
    $var=array();
    $var=newobject();
    動(dòng)態(tài)變量,在運(yùn)行期間是可以改變的,并且在使用前無需聲明變量類型。
    問題一、zend引擎是如何用c實(shí)現(xiàn)這種弱類型的'呢?
    實(shí)際上,在php中聲明的變量,在ze中都是用結(jié)構(gòu)體zval來保存的。
    首先我們打開zend/zend.h來看zval的定義:
    typedefstruct_zval_structzval;
    struct_zval_struct{
    /*variableinformation*/
    zvalue_valuevalue;/*value*/
    zend_uintrefcount__gc;
    zend_uchartype;/*activetype*/
    zend_ucharis_ref__gc; };
    typedefunion_zvalue_value{ longlval;/*longvalue*/
    doubledval;/*doublevalue*/
    struct
    { char*val;
    intlen;
    }str; hashtable*ht;
    /*hashtablevalue*/ zend_object_valueobj;
    }zvalue_value;
    zend/zend_types.h:
    typedefunsignedcharzend_bool;
    typedefunsignedcharzend_uchar;
    typedefunsignedintzend_uint;
    typedefunsignedlongzend_ulong;
    typedefunsignedshortzend_ushort;
    從上述代碼中,可以看到_zvalue_value是真正保存數(shù)據(jù)的關(guān)鍵部分。通過共用體實(shí)現(xiàn)的弱類型變量聲明
    問題二、zend引擎是如何判別、存儲(chǔ)php中的多種數(shù)據(jù)類型的呢?
    中存儲(chǔ)著一個(gè)變量的真正類型,根據(jù)type來選擇如何獲取zvalue_value的值。
    type值列表(zend/zend.h):
    #defineis_null 0
    #defineis_long 1
    #defineis_double 2
    #defineis_bool 3
    #defineis_array 4
    #defineis_object 5
    #defineis_string 6
    #defineis_resource 7
    #defineis_constant 8
    #defineis_constant_array 9
    來看一個(gè)簡(jiǎn)單的例子:
    $a=1; //=is_long,就去取lval.
    $a=array();
    //=is_array,就去取ht.
    這其中最復(fù)雜的,并且在開發(fā)第三方擴(kuò)展中經(jīng)常需要用到的是”資源類型”.
    在php中,任何不屬于php的內(nèi)建的變量類型的變量,都會(huì)被看作資源來進(jìn)行保存。
    比如:數(shù)據(jù)庫(kù)句柄、打開的文件句柄、打開的socket句柄。
    資源類型,會(huì)用lval,此時(shí)它是一個(gè)整型指示器, 然后php會(huì)再根據(jù)這個(gè)指示器在php內(nèi)建的一個(gè)資源列表中查詢相對(duì)應(yīng)的資源。
    正是因?yàn)閦e這樣的處理方式,使php就實(shí)現(xiàn)了弱類型,而對(duì)于ze的來說,它所面對(duì)的永遠(yuǎn)都是同一種類型zval。
    s("content_relate");
    【php弱類型變量是如何實(shí)現(xiàn)的】相關(guān)文章:
    php變量類型和整型類型細(xì)節(jié)
    08-18
    php數(shù)據(jù)類型之?dāng)?shù)組變量詳解
    09-17
    php的變量
    09-20
    php變量介紹
    09-20
    php的變量介紹
    08-21
    php如何實(shí)現(xiàn)快速排序
    09-02
    如何用php實(shí)現(xiàn)找回密碼
    09-21
    php如何實(shí)現(xiàn)驗(yàn)證碼
    09-01
    php的變量是什么
    09-30