За последние 24 часа нас посетили 35076 программистов и 1758 роботов. Сейчас ищут 824 программиста ...

php extension как распарсить объект ?

Тема в разделе "Прочие вопросы по PHP", создана пользователем progman_rus, 14 окт 2010.

  1. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    пишу расширение. надо получить объек, распарсить его переменные и вернуть какие то значения через них.
    вот объект который будет на входе в функцию
    Код (Text):
    1. class IPRIV_KEY
    2. {
    3.    var $eng;
    4.    var $type;      
    5.    var $keyserial; 
    6.    var $userid;
    7.    var $key;   
    8. }
    ну вот тут я попробовал что то соорудить - но не знаю что делать дальше. в мануалах про объекты ничего не расписано подробно а в исходниках готовых расширений с объектами ничего не понял (
    нашел только то что надо юзать так:
    zend_class_entry *cKey = zend_fetch_class("IPRIV_KEY", sizeof("IPRIV_KEY")-1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC);
    zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &obj, ce )
    Код (Text):
    1.  
    2. PHP_FUNCTION(crypt_OpenSecretKeyFromFile )
    3. {
    4.    zval *obj;
    5.    zend_class_entry *cKey = zend_fetch_class("IPRIV_KEY", sizeof("IPRIV_KEY")-1, ZEND_FETCH_CLASS_DEFAULT TSRMLS_CC);
    6.  
    7.     if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &obj, ce ) == FAILURE)
    8.     {
    9.         RETURN_LONG( -1 );
    10.     }
    11.    
    12.    
    13.    RETURN_LONG( 0 );
    14. }
    дальше мне как то надо получить доступ к переменным объекта, инициализировать их значениями и вернуть назад.
     
  2. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    да, вот на С структура которую я хочу на стороне экстеншена сформировать
    Код (Text):
    1. // Структура ключа
    2. typedef struct
    3. {
    4.     short eng;              // Тип криптосредства
    5.     short type;             // Тип ключа
    6.     unsigned long keyserial;        // Серийный номер ключа
    7.     char userid[24];            // Код покупателя (минимум MAX_USERID_LENGTH+1)
    8.     void* key;              // Специфические для криптосредства данные
    9. }IPRIV_KEY;
    PS только не советйте по параметрам отдельным ее передавать. это слишком просто, хочу именно как объект
     
  3. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    вопрос решен.