PHP変数の原理

WBOY
WBOYオリジナル
2016-07-29 08:57:44811ブラウズ

1. php は弱い型付け言語なので、変数の型を明示的に指定する必要はありませんが、php 変数には次の 8 種類の変数 (3 つのカテゴリ) があります

a. スカラー型: ブール型。 、整数、浮動小数点(double)、文字列

b. 複合型: 配列、オブジェクト

c. 特殊な型: リソース、null

2.php は変数の格納構造を実装するために C 言語を使用します

typedef struct _zval_struct zval;
...
struct _zval_struct {
    /* Variable information */
    zvalue_value value;     /*存储变量的值,是一个union类型*/
    zend_uint refcount__gc;/*变量的引用计数,默认为1*/
    zend_uchar type;    /*变量的类型,为IS_NULL、IS_BOOL、IS_LONG、IS_DOUBLE、IS_STRING、IS_ARRAY、IS_OBJECT和IS_RESOURCE之一*/
    zend_uchar is_ref__gc;/*表示是否为引用*/
};

b. 格納された変数 zvalue_value の値は次のとおりです

typedef union _zvalue_value {
    long lval;                  /* long value */
    double dval;                /* double value */
    struct {
        char *val;
        int len;
    } str;
    HashTable *ht;              /* hash table value */
    zend_object_value obj;
} zvalue_value;

ここでは、変数は同時に 1 つの型しか表現できないと考えて、構造体の代わりに Union を使用しています

:tipi オープンソース プロジェクト http://www .php-internals.com/book/?p=chapt03/03-01-00-variables- Structure

上記は、PHP 変数の原理を内容も含めて紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。