Comment implémenter les variables PHP : déclarez d'abord un pointeur zval et demandez un morceau de mémoire ; puis définissez la valeur sur bar via la macro [ZVAL_STRING], enfin ajoutez ce zval à la table des symboles actuelle, et définissez ; son étiquette est foo.
[Recommandations d'apprentissage associées : Tutoriel graphique php]
Comment implémenter des variables php :
Introduction
Dans l'implémentation officielle de PHP, toutes les variables sont enregistrées en utilisant la même structure de données (zval), et cette structure représente également chaque variable dans les données PHP. taper. Il contient non seulement la valeur de la variable, mais également le type de la variable. C'est le cœur du typage faible de PHP.
Type scalaire : booléen, entier, float(double), chaîne
Type composite : tableau, objet
Types spéciaux : ressource, NULL
Structure de stockage des variables
PHP utilise la structure zval dans le noyau pour stocker les variables. , sa définition est dans le fichier Zend/zend.h. Il est court et concis, composé de seulement quatre membres :
struct _zval_struct { zvalue_value value; /* 变量的值 */ zend_uint refcount__gc; zend_uchar type; /* 变量当前的数据类型 */ zend_uchar is_ref__gc; }; typedef struct _zval_struct zval; //在Zend/zend_types.h里定义的: typedef unsigned int zend_uint; typedef unsigned char zend_uchar;
refcount__gc signifie nombre de références 1
Type de variable
Le champ de type de la structure zval est le champ le plus critique pour implémenter un typage faible. La valeur de type peut. être :, IS_NULL
, IS_BOOL
, IS_LONG
, IS_DOUBLE
, IS_STRING
, IS_ARRAY
, IS_OBJECT
. C'est facile à comprendre littéralement. Ce ne sont que des identifiants uniques de types, et différentes valeurs sont stockées dans le champ de valeur en fonction de différents types. De plus, les types définis avec eux sont IS_RESOURCE
et IS_CONSTANT
. IS_CONSTANT_ARRAY
Exemple
<?php $foo = 'bar'; ?>
{ zval *fooval; MAKE_STD_ZVAL(fooval); ZVAL_STRING(fooval, "bar", 1); ZEND_SET_SYMBOL( EG(active_symbol_table) , "foo" , fooval); }
Recommandations d'apprentissage associées :programmation php (vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!