假设PHP中有一个类
class my_class{
    var $name;
    var $age;
    var $grade;
}$obj = new my_class();
$obj->name = "sxg";
$obj->age = 20;
$obj->grade = 3;在PHP扩展模块中有一个函数my_class_set, 在PHP页面中可以调用my_class_set($obj),
那么我如何才能在扩展模块中获取到$obj的各个值呢??在线等,感谢您的关注。

解决方案 »

  1.   


    复制粘贴就OK了...PHP_FUNCTION(my_class_set){ zval **obj;
    HashTable* m_ht=NULL; zend_get_parameters_ex(1,&obj);
    convert_to_object_ex(obj);
    m_ht=Z_OBJPROP_PP(obj);
    Bucket* p_bkt=m_ht->pListHead;

    for(int i=1;i<=(int)m_ht->nNumOfElements;i++){

    zval** keyvalue;
    char* keyname=estrndup(p_bkt->arKey,p_bkt->nKeyLength-1);

    keyvalue=(zval**)p_bkt->pData;

    switch((*keyvalue)->type){
    case IS_STRING:
    {
    convert_to_string_ex(keyvalue);
    char* kv=Z_STRVAL_PP(keyvalue);
    zend_printf("[\"%s\"]=>\"%s\"<br>",keyname,kv);
    break;
    }
    case IS_LONG:
    {
    convert_to_long_ex(keyvalue);
    long kv=Z_LVAL_PP(keyvalue);
    zend_printf("[\"%s\"]=>%d<br>",keyname,kv);
    break;
    }
    default:
    return;
    } p_bkt=p_bkt->pListNext;
    }}