PHP_ME(HttpMessage, setRequestUri, NULL, ZEND_ACC_PUBLIC)
PHP_ME(HttpMessage, getHttpVersion, NULL, ZEND_ACC_PUBLIC)
PHP_ME(HttpMessage, setHttpVersion, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(HttpMessage, getNestedMessage, NULL, ZEND_ACC_PUBLIC)
PHP_ME(HttpMessage, toString, NULL, ZEND_ACC_PUBLIC)
ZEND_MALIAS(HttpMessage, __toString, toString, NULL, ZEND_ACC_PUBLIC)
o = ecalloc(1, sizeof(http_message_object));
o->zo.ce = ce;
-
- MAKE_STD_ZVAL(o->nested);
- Z_TYPE_P(o->nested) = IS_OBJECT;
+ o->message = NULL;
if (msg) {
o->message = msg;
if (msg->nested) {
- o->nested->value.obj = http_message_object_from_msg(msg->nested);
+ o->nested = http_message_object_from_msg(msg->nested);
}
- } else {
- o->message = http_message_new();
}
ALLOC_HASHTABLE(OBJ_PROP(o));
zend_class_entry *ce = http_message_object_ce;
DCL_PROP(PROTECTED, long, type, HTTP_MSG_NONE);
-
DCL_PROP(PROTECTED, string, body, "");
-
DCL_PROP(PROTECTED, string, requestMethod, "");
DCL_PROP(PROTECTED, string, requestUri, "");
DCL_PROP(PROTECTED, long, responseCode, 0);
-
DCL_PROP_N(PROTECTED, httpVersion);
DCL_PROP_N(PROTECTED, headers);
-
+
DCL_PROP_N(PUBLIC, nestedMessage);
}
http_message_dtor(o->message);
efree(o->message);
}
- FREE_ZVAL(o->nested);
- zval_dtor(&o->_tmp_property);
efree(o);
}
{
getObjectEx(http_message_object, obj, object);
http_message *msg = obj->message;
- zval *return_value = &obj->_tmp_property;
+ zval *return_value;
- /* public */
- if (strcmp(Z_STRVAL_P(member), "nestedMessage")) {
- if (!EG(scope) || !instanceof_function(EG(scope), obj->zo.ce TSRMLS_CC)) {
- zend_error(E_WARNING, "Cannot access protected property %s::$%s", obj->zo.ce->name, Z_STRVAL_P(member));
- return EG(uninitialized_zval_ptr);
- }
+ /* tmp var */
+ ALLOC_ZVAL(return_value);
+ return_value->refcount = 0;
+
+ if (!EG(scope) || !instanceof_function(EG(scope), obj->zo.ce TSRMLS_CC)) {
+ zend_error(E_WARNING, "Cannot access protected property %s::$%s", obj->zo.ce->name, Z_STRVAL_P(member));
+ return EG(uninitialized_zval_ptr);
}
zval_dtor(return_value);
break;
case HTTP_MSG_PROPHASH_NESTED_MESSAGE:
- RETVAL_NULL();
if (msg->nested) {
- return obj->nested;
+ Z_TYPE_P(return_value) = IS_OBJECT;
+ return_value->value.obj = obj->nested;
+ zend_objects_store_add_ref(return_value TSRMLS_CC);
+ } else {
+ RETVAL_NULL();
}
break;
getObjectEx(http_message_object, obj, object);
http_message *msg = obj->message;
- /* public */
- if (strcmp("nestedMessage", Z_STRVAL_P(member))) {
- if (!EG(scope) || !instanceof_function(EG(scope), obj->zo.ce TSRMLS_CC)) {
- zend_error(E_WARNING, "Cannot access protected property %s::$%s", obj->zo.ce->name, Z_STRVAL_P(member));
- }
+ if (!EG(scope) || !instanceof_function(EG(scope), obj->zo.ce TSRMLS_CC)) {
+ zend_error(E_WARNING, "Cannot access protected property %s::$%s", obj->zo.ce->name, Z_STRVAL_P(member));
}
#if 0
break;
case HTTP_MSG_PROPHASH_NESTED_MESSAGE:
- zval_ptr_dtor(&obj->nested);
- obj->nested->value.obj = value->value.obj;
- zval_add_ref(&value);
+ if (msg->nested) {
+ zval tmp;
+ tmp.value.obj = obj->nested;
+ zend_objects_store_del_ref(&tmp TSRMLS_CC);
+ }
+ zend_objects_store_add_ref(value TSRMLS_CC);
+ obj->nested = value->value.obj;
break;
case HTTP_MSG_PROPHASH_REQUEST_METHOD:
}
break;
}
- zval_dtor(value);
- FREE_ZVAL(value);
}
static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC)