Re: Doc on the VM
| From: | Nicolai Scheer | Date: | Fri, 02 Oct 2009 14:46:28 +0000 |
| Subject: | Re: Doc on the VM | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-45654@lists.php.net to get a copy of this message | ||
Hi!
Mathieu Suen schrieb:
> Hi,
>
> I would like to know if there is some documentation on the different
> layout of the array, object varaible ... in php.
> Or were in the source can we read how the php VM reprensent those entites?
At first, you should have a look at Zend/zend.h in the php source tree.
There you'll find the definition of a "php variable", the zval struct:
struct _zval_struct {
/* Variable information */
zvalue_value value; /* value */
zend_uint refcount__gc;
zend_uchar type; /* active type */
zend_uchar is_ref__gc;
};
The content of the variable is:
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;
Since a php variable can contain any type php has to offer, this
representation was choosen in order to simplify access on the internal side.
There's a bunch of macros for creating zvals, getting/setting
types/values, etc. so you don't need to do this by hand (of course, in
complex cases you have to).
Does this help?
greetings,
Nico