/*
- +----------------------------------------------------------------------+
- | PECL :: http |
- +----------------------------------------------------------------------+
- | This source file is subject to version 3.0 of the PHP license, that |
- | is bundled with this package in the file LICENSE, and is available |
- | through the world-wide-web at http://www.php.net/license/3_0.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Copyright (c) 2004-2005 Michael Wallner <mike@php.net> |
- +----------------------------------------------------------------------+
+ +--------------------------------------------------------------------+
+ | PECL :: http |
+ +--------------------------------------------------------------------+
+ | Redistribution and use in source and binary forms, with or without |
+ | modification, are permitted provided that the conditions mentioned |
+ | in the accompanying LICENSE file are met. |
+ +--------------------------------------------------------------------+
+ | Copyright (c) 2004-2005, Michael Wallner <mike@php.net> |
+ +--------------------------------------------------------------------+
*/
/* $Id$ */
};
static zend_object_handlers http_message_object_handlers;
-void _http_message_object_init(INIT_FUNC_ARGS)
+PHP_MINIT_FUNCTION(http_message_object)
{
HTTP_REGISTER_CLASS_EX(HttpMessage, http_message_object, NULL, 0);
http_message_object_handlers.write_property = http_message_object_write_prop;
http_message_object_handlers.get_properties = http_message_object_get_props;
http_message_object_handlers.get_property_ptr_ptr = NULL;
+
+ return SUCCESS;
}
zend_object_value _http_message_object_new(zend_class_entry *ce TSRMLS_DC)
break;
case HTTP_MSG_PROPHASH_PARENT_MESSAGE:
- if (msg->parent) {
- zval tmp;
- tmp.value.obj = obj->parent;
- zend_objects_store_del_ref(&tmp TSRMLS_CC);
+ if (Z_TYPE_P(value) == IS_OBJECT && instanceof_function(Z_OBJCE_P(value), http_message_object_ce TSRMLS_CC)) {
+ if (msg->parent) {
+ zval tmp;
+ tmp.value.obj = obj->parent;
+ Z_OBJ_DELREF(tmp);
+ }
+ Z_OBJ_ADDREF_P(value);
+ obj->parent = value->value.obj;
}
- zend_objects_store_add_ref(value TSRMLS_CC);
- obj->parent = value->value.obj;
break;
case HTTP_MSG_PROPHASH_REQUEST_METHOD:
IF_RETVAL_USED {
getObject(http_message_object, obj);
-
- if (!HTTP_MSG_TYPE(RESPONSE, obj->message)) {
- http_error(HE_NOTICE, HTTP_E_MESSAGE_TYPE, "HttpMessage is not of type HTTP_MSG_RESPONSE");
- RETURN_FALSE;
- }
-
+ HTTP_CHECK_MESSAGE_TYPE_RESPONSE(obj->message, RETURN_FALSE);
RETURN_LONG(obj->message->http.info.response.code);
}
}
long code;
getObject(http_message_object, obj);
- if (!HTTP_MSG_TYPE(RESPONSE, obj->message)) {
- http_error(HE_WARNING, HTTP_E_MESSAGE_TYPE, "HttpMessage is not of type HTTP_MSG_RESPONSE");
- RETURN_FALSE;
- }
+ HTTP_CHECK_MESSAGE_TYPE_RESPONSE(obj->message, RETURN_FALSE);
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code)) {
RETURN_FALSE;
IF_RETVAL_USED {
getObject(http_message_object, obj);
-
- if (!HTTP_MSG_TYPE(REQUEST, obj->message)) {
- http_error(HE_NOTICE, HTTP_E_MESSAGE_TYPE, "HttpMessage is not of type HTTP_MSG_REQUEST");
- RETURN_FALSE;
- }
-
+ HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE);
RETURN_STRING(obj->message->http.info.request.method, 1);
}
}
int method_len;
getObject(http_message_object, obj);
- if (!HTTP_MSG_TYPE(REQUEST, obj->message)) {
- http_error(HE_WARNING, HTTP_E_MESSAGE_TYPE, "HttpMessage is not of type HTTP_MSG_REQUEST");
- RETURN_FALSE;
- }
+ HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE);
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &method, &method_len)) {
RETURN_FALSE;
IF_RETVAL_USED {
getObject(http_message_object, obj);
-
- if (!HTTP_MSG_TYPE(REQUEST, obj->message)) {
- http_error(HE_WARNING, HTTP_E_MESSAGE_TYPE, "HttpMessage is not of type HTTP_MSG_REQUEST");
- RETURN_FALSE;
- }
-
+ HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE);
RETURN_STRING(obj->message->http.info.request.URI, 1);
}
}
int URIlen;
getObject(http_message_object, obj);
- if (!HTTP_MSG_TYPE(REQUEST, obj->message)) {
- http_error(HE_WARNING, HTTP_E_MESSAGE_TYPE, "HttpMessage is not of type HTTP_MSG_REQUEST");
- RETURN_FALSE;
- }
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &URI, &URIlen)) {
RETURN_FALSE;
}
+ HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE);
if (URIlen < 1) {
http_error(HE_WARNING, HTTP_E_INVALID_PARAM, "Cannot set HttpMessage::requestUri to an empty string");
RETURN_FALSE;