Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:37510 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 21853 invoked from network); 7 May 2008 12:58:58 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 7 May 2008 12:58:58 -0000 Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 212.25.124.162 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 212.25.124.162 mail.zend.com Linux 2.5 (sometimes 2.4) (4) Received: from [212.25.124.162] ([212.25.124.162:23939] helo=mail.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 80/75-20715-E87A1284 for ; Wed, 07 May 2008 08:58:57 -0400 Received: (qmail 11782 invoked from network); 7 May 2008 12:58:51 -0000 Received: from cvs.zend.com (HELO ws.home) (10.1.1.1) by mail.zend.net with SMTP; 7 May 2008 12:58:51 -0000 Message-ID: <4821A78A.5080405@zend.com> Date: Wed, 07 May 2008 16:58:50 +0400 User-Agent: Thunderbird 2.0.0.12 (X11/20080226) MIME-Version: 1.0 To: PHP Internals List Content-Type: multipart/mixed; boundary="------------070000060208040004090008" Subject: [PATCH] API for internal namespaces From: dmitry@zend.com (Dmitry Stogov) --------------070000060208040004090008 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, The attached patch allows to declare internal classes, functions and constants in namesaces and create aliases for classes and functions. I'm going to commit it on next week in case of no objections. The second patch (for ext/soap) is just a prove of concept and I'm not going to commit it in this time. Thanks. Dmitry. --------------070000060208040004090008 Content-Type: text/plain; name="internal_namesapces.diff.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="internal_namesapces.diff.txt" Index: Zend/zend_API.c =================================================================== RCS file: /repository/ZendEngine2/zend_API.c,v retrieving revision 1.296.2.27.2.34.2.34 diff -u -p -d -r1.296.2.27.2.34.2.34 zend_API.c --- Zend/zend_API.c 5 May 2008 09:44:39 -0000 1.296.2.27.2.34.2.34 +++ Zend/zend_API.c 7 May 2008 12:50:31 -0000 @@ -2213,6 +2213,20 @@ ZEND_API zend_class_entry *zend_register } /* }}} */ +ZEND_API int zend_register_class_alias_ex(char *name, int name_len, zend_class_entry *ce TSRMLS_DC) /* {{{ */ +{ + char *lcname = zend_str_tolower_dup(name, name_len); + int ret; + + ret = zend_hash_add(CG(class_table), lcname, name_len+1, &ce, sizeof(zend_class_entry *), NULL); + efree(lcname); + if (ret == SUCCESS) { + ce->refcount++; + } + return ret; +} +/* }}} */ + ZEND_API int zend_set_hash_symbol(zval *symbol, char *name, int name_length, zend_bool is_ref, int num_symbol_tables, ...) /* {{{ */ { HashTable *symbol_table; Index: Zend/zend_API.h =================================================================== RCS file: /repository/ZendEngine2/zend_API.h,v retrieving revision 1.207.2.8.2.8.2.10 diff -u -p -d -r1.207.2.8.2.8.2.10 zend_API.h --- Zend/zend_API.h 29 Apr 2008 08:15:16 -0000 1.207.2.8.2.8.2.10 +++ Zend/zend_API.h 7 May 2008 12:50:32 -0000 @@ -40,6 +40,8 @@ typedef struct _zend_function_entry { zend_uint flags; } zend_function_entry; +#define ZEND_NS_NAME(ns, name) ns"::"name + #define ZEND_FN(name) zif_##name #define ZEND_MN(name) zim_##name #define ZEND_NAMED_FUNCTION(name) void name(INTERNAL_FUNCTION_PARAMETERS) @@ -63,6 +65,17 @@ typedef struct _zend_function_entry { ZEND_FENTRY(name, ZEND_MN(classname##_##alias), arg_info, flags) #define ZEND_ME_MAPPING(name, func_name, arg_types, flags) ZEND_NAMED_ME(name, ZEND_FN(func_name), arg_types, flags) +#define ZEND_NS_FENTRY(ns, zend_name, name, arg_info, flags) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, #zend_name), name, arg_info, flags) + +#define ZEND_NS_RAW_FENTRY(ns, zend_name, name, arg_info, flags) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, zend_name), name, arg_info, flags) +#define ZEND_NS_RAW_NAMED_FE(ns, zend_name, name, arg_info) ZEND_NS_RAW_FENTRY(ns, #zend_name, name, arg_info, 0) + +#define ZEND_NS_NAMED_FE(ns, zend_name, name, arg_info) +#define ZEND_NS_FE(ns, name, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(name), arg_info, 0) +#define ZEND_NS_DEP_FE(ns, name, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(name), arg_info, ZEND_ACC_DEPRECATED) +#define ZEND_NS_FALIAS(ns, name, alias, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(alias), arg_info, 0) +#define ZEND_NS_DEP_FALIAS(ns, name, alias, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(alias), arg_info, ZEND_ACC_DEPRECATED) + #define ZEND_ARG_INFO(pass_by_ref, name) { #name, sizeof(#name)-1, NULL, 0, 0, 0, pass_by_ref, 0, 0 }, #define ZEND_ARG_PASS_INFO(pass_by_ref) { NULL, 0, NULL, 0, 0, 0, pass_by_ref, 0, 0 }, #define ZEND_ARG_OBJ_INFO(pass_by_ref, name, classname, allow_null) { #name, sizeof(#name)-1, #classname, sizeof(#classname)-1, 0, allow_null, pass_by_ref, 0, 0 }, @@ -166,6 +179,13 @@ typedef struct _zend_function_entry { #define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \ INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, sizeof(class_name)-1, functions, handle_fcall, handle_propget, handle_propset, NULL, NULL) +#define INIT_NS_CLASS_ENTRY(class_container, ns, class_name, functions) \ + INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions) +#define INIT_OVERLOADED_NS_CLASS_ENTRY_EX(class_container, ns, class_name, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \ + INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, ZEND_NS_NAME(ns, class_name), sizeof(ZEND_NS_NAME(ns, class_name))-1, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) +#define INIT_OVERLOADED_NS_CLASS_ENTRY(class_container, ns, class_name, functions, handle_fcall, handle_propget, handle_propset) \ + INIT_OVERLOADED_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions, handle_fcall, handle_propget, handle_propset) + #ifdef ZTS # define CE_STATIC_MEMBERS(ce) (((ce)->type==ZEND_USER_CLASS)?(ce)->static_members:CG(static_members)[(zend_intptr_t)(ce)->static_members]) #else @@ -218,6 +238,13 @@ ZEND_API zend_class_entry *zend_register ZEND_API zend_class_entry *zend_register_internal_interface(zend_class_entry *orig_class_entry TSRMLS_DC); ZEND_API void zend_class_implements(zend_class_entry *class_entry TSRMLS_DC, int num_interfaces, ...); +ZEND_API int zend_register_class_alias_ex(char *name, int name_len, zend_class_entry *ce TSRMLS_DC); + +#define zend_register_class_alias(name, ce) \ + zend_register_class_alias_ex(name, sizeof(name)-1, ce TSRMLS_DC) +#define zend_register_ns_class_alias(ns, name, ce) \ + zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce TSRMLS_DC) + ZEND_API int zend_disable_function(char *function_name, uint function_name_length TSRMLS_DC); ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC); Index: Zend/zend_constants.h =================================================================== RCS file: /repository/ZendEngine2/zend_constants.h,v retrieving revision 1.31.2.2.2.3.2.2 diff -u -p -d -r1.31.2.2.2.3.2.2 zend_constants.h --- Zend/zend_constants.h 31 Dec 2007 07:17:04 -0000 1.31.2.2.2.3.2.2 +++ Zend/zend_constants.h 7 May 2008 12:50:32 -0000 @@ -43,6 +43,11 @@ typedef struct _zend_constant { #define REGISTER_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name), (str), (flags), module_number TSRMLS_CC) #define REGISTER_STRINGL_CONSTANT(name, str, len, flags) zend_register_stringl_constant((name), sizeof(name), (str), (len), (flags), module_number TSRMLS_CC) +#define REGISTER_NS_LONG_CONSTANT(ns, name, lval, flags) zend_register_long_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (lval), (flags), module_number TSRMLS_CC) +#define REGISTER_NS_DOUBLE_CONSTANT(ns, name, dval, flags) zend_register_double_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (dval), (flags), module_number TSRMLS_CC) +#define REGISTER_NS_STRING_CONSTANT(ns, name, str, flags) zend_register_string_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (str), (flags), module_number TSRMLS_CC) +#define REGISTER_NS_STRINGL_CONSTANT(ns, name, str, len, flags) zend_register_stringl_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (str), (len), (flags), module_number TSRMLS_CC) + #define REGISTER_MAIN_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name), (lval), (flags), 0 TSRMLS_CC) #define REGISTER_MAIN_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name), (dval), (flags), 0 TSRMLS_CC) #define REGISTER_MAIN_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name), (str), (flags), 0 TSRMLS_CC) Index: main/php.h =================================================================== RCS file: /repository/php-src/main/php.h,v retrieving revision 1.221.2.4.2.8.2.4 diff -u -p -d -r1.221.2.4.2.8.2.4 php.h --- main/php.h 8 Mar 2008 22:12:32 -0000 1.221.2.4.2.8.2.4 +++ main/php.h 7 May 2008 12:50:32 -0000 @@ -341,6 +341,13 @@ END_EXTERN_C() #define PHP_ABSTRACT_ME ZEND_ABSTRACT_ME #define PHP_ME_MAPPING ZEND_ME_MAPPING +#define PHP_NS_RAW_NAMED_FE ZEND_NS_RAW_NAMED_FE +#define PHP_NS_NAMED_FE ZEND_NS_NAMED_FE +#define PHP_NS_FE ZEND_NS_FE +#define PHP_NS_DEP_FE ZEND_NS_DEP_FE +#define PHP_NS_FALIAS ZEND_NS_FALIAS +#define PHP_NS_DEP_FALIAS ZEND_NS_DEP_FALIAS + #define PHP_MODULE_STARTUP_N ZEND_MODULE_STARTUP_N #define PHP_MODULE_SHUTDOWN_N ZEND_MODULE_SHUTDOWN_N #define PHP_MODULE_ACTIVATE_N ZEND_MODULE_ACTIVATE_N --------------070000060208040004090008 Content-Type: text/plain; name="internal_namesapces_soap.diff.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="internal_namesapces_soap.diff.txt" Index: ext/soap/soap.c =================================================================== RCS file: /repository/php-src/ext/soap/soap.c,v retrieving revision 1.156.2.28.2.30.2.14 diff -u -p -d -r1.156.2.28.2.30.2.14 soap.c --- ext/soap/soap.c 10 Mar 2008 22:12:35 -0000 1.156.2.28.2.30.2.14 +++ ext/soap/soap.c 5 May 2008 09:05:16 -0000 @@ -30,6 +30,8 @@ # include "zend_exceptions.h" #endif +#define PHP_SOAP_NAMESPACE "php::soap" + static int le_sdl = 0; int le_url = 0; static int le_service = 0; @@ -240,7 +242,7 @@ PHP_FUNCTION(is_soap_fault); /* Server Functions */ -PHP_METHOD(SoapServer, SoapServer); +PHP_METHOD(SoapServer, __construct); PHP_METHOD(SoapServer, setClass); PHP_METHOD(SoapServer, setObject); PHP_METHOD(SoapServer, addFunction); @@ -251,7 +253,7 @@ PHP_METHOD(SoapServer, fault); PHP_METHOD(SoapServer, addSoapHeader); /* Client Functions */ -PHP_METHOD(SoapClient, SoapClient); +PHP_METHOD(SoapClient, __construct); PHP_METHOD(SoapClient, __call); PHP_METHOD(SoapClient, __getLastRequest); PHP_METHOD(SoapClient, __getLastResponse); @@ -265,30 +267,32 @@ PHP_METHOD(SoapClient, __setLocation); PHP_METHOD(SoapClient, __setSoapHeaders); /* SoapVar Functions */ -PHP_METHOD(SoapVar, SoapVar); +PHP_METHOD(SoapVar, __construct); /* SoapFault Functions */ -PHP_METHOD(SoapFault, SoapFault); +PHP_METHOD(SoapFault, __construct); #ifdef ZEND_ENGINE_2 PHP_METHOD(SoapFault, __toString); #endif /* SoapParam Functions */ -PHP_METHOD(SoapParam, SoapParam); +PHP_METHOD(SoapParam, __construct); /* SoapHeader Functions */ -PHP_METHOD(SoapHeader, SoapHeader); +PHP_METHOD(SoapHeader, __construct); #define SOAP_CTOR(class_name, func_name, arginfo, flags) PHP_ME(class_name, func_name, arginfo, flags) static const zend_function_entry soap_functions[] = { PHP_FE(use_soap_error_handler, NULL) PHP_FE(is_soap_fault, NULL) + PHP_NS_FALIAS(PHP_SOAP_NAMESPACE, use_error_handler, use_soap_error_handler, NULL) + PHP_NS_FALIAS(PHP_SOAP_NAMESPACE, is_fault, is_soap_fault, NULL) {NULL, NULL, NULL} }; static const zend_function_entry soap_fault_functions[] = { - SOAP_CTOR(SoapFault, SoapFault, NULL, 0) + SOAP_CTOR(SoapFault, __construct, NULL, 0) #ifdef ZEND_ENGINE_2 PHP_ME(SoapFault, __toString, NULL, 0) #endif @@ -296,7 +300,7 @@ static const zend_function_entry soap_fa }; static const zend_function_entry soap_server_functions[] = { - SOAP_CTOR(SoapServer, SoapServer, NULL, 0) + SOAP_CTOR(SoapServer, __construct, NULL, 0) PHP_ME(SoapServer, setPersistence, NULL, 0) PHP_ME(SoapServer, setClass, NULL, 0) PHP_ME(SoapServer, setObject, NULL, 0) @@ -326,7 +330,7 @@ unsigned char __soap_call_args[] = { 5, #endif static const zend_function_entry soap_client_functions[] = { - SOAP_CTOR(SoapClient, SoapClient, NULL, 0) + SOAP_CTOR(SoapClient, __construct, NULL, 0) PHP_ME(SoapClient, __call, __call_args, 0) ZEND_NAMED_ME(__soapCall, ZEND_MN(SoapClient___call), __soap_call_args, 0) PHP_ME(SoapClient, __getLastRequest, NULL, 0) @@ -343,17 +347,17 @@ static const zend_function_entry soap_cl }; static const zend_function_entry soap_var_functions[] = { - SOAP_CTOR(SoapVar, SoapVar, NULL, 0) + SOAP_CTOR(SoapVar, __construct, NULL, 0) {NULL, NULL, NULL} }; static const zend_function_entry soap_param_functions[] = { - SOAP_CTOR(SoapParam, SoapParam, NULL, 0) + SOAP_CTOR(SoapParam, __construct, NULL, 0) {NULL, NULL, NULL} }; static const zend_function_entry soap_header_functions[] = { - SOAP_CTOR(SoapHeader, SoapHeader, NULL, 0) + SOAP_CTOR(SoapHeader, __construct, NULL, 0) {NULL, NULL, NULL} }; @@ -552,6 +556,7 @@ PHP_MINIT_FUNCTION(soap) INIT_OVERLOADED_CLASS_ENTRY(ce, PHP_SOAP_CLIENT_CLASSNAME, soap_client_functions, (zend_function *)&fe, NULL, NULL); soap_class_entry = zend_register_internal_class(&ce TSRMLS_CC); + zend_register_ns_class_alias(PHP_SOAP_NAMESPACE, "Client", soap_class_entry); } #else INIT_OVERLOADED_CLASS_ENTRY(ce, PHP_SOAP_CLIENT_CLASSNAME, soap_client_functions, soap_call_function_handler, NULL, NULL); @@ -559,17 +564,26 @@ PHP_MINIT_FUNCTION(soap) #endif /* Register SoapVar class */ +#if 1 + INIT_NS_CLASS_ENTRY(ce, PHP_SOAP_NAMESPACE, "Variable", soap_var_functions); + soap_var_class_entry = zend_register_internal_class(&ce TSRMLS_CC); + zend_register_class_alias(PHP_SOAP_VAR_CLASSNAME, soap_var_class_entry); +#else INIT_CLASS_ENTRY(ce, PHP_SOAP_VAR_CLASSNAME, soap_var_functions); soap_var_class_entry = zend_register_internal_class(&ce TSRMLS_CC); + zend_register_ns_class_alias(PHP_SOAP_NAMESPACE, "Variable", soap_var_class_entry); +#endif /* Register SoapServer class */ INIT_CLASS_ENTRY(ce, PHP_SOAP_SERVER_CLASSNAME, soap_server_functions); soap_server_class_entry = zend_register_internal_class(&ce TSRMLS_CC); + zend_register_ns_class_alias(PHP_SOAP_NAMESPACE, "Server", soap_server_class_entry); /* Register SoapFault class */ INIT_CLASS_ENTRY(ce, PHP_SOAP_FAULT_CLASSNAME, soap_fault_functions); #ifdef ZEND_ENGINE_2 soap_fault_class_entry = zend_register_internal_class_ex(&ce, zend_exception_get_default(TSRMLS_C), NULL TSRMLS_CC); + zend_register_ns_class_alias(PHP_SOAP_NAMESPACE, "Fault", soap_fault_class_entry); #else soap_fault_class_entry = zend_register_internal_class(&ce TSRMLS_CC); #endif @@ -577,9 +591,11 @@ PHP_MINIT_FUNCTION(soap) /* Register SoapParam class */ INIT_CLASS_ENTRY(ce, PHP_SOAP_PARAM_CLASSNAME, soap_param_functions); soap_param_class_entry = zend_register_internal_class(&ce TSRMLS_CC); + zend_register_ns_class_alias(PHP_SOAP_NAMESPACE, "Param", soap_param_class_entry); INIT_CLASS_ENTRY(ce, PHP_SOAP_HEADER_CLASSNAME, soap_header_functions); soap_header_class_entry = zend_register_internal_class(&ce TSRMLS_CC); + zend_register_ns_class_alias(PHP_SOAP_NAMESPACE, "Header", soap_header_class_entry); le_sdl = register_list_destructors(delete_sdl, NULL); le_url = register_list_destructors(delete_url, NULL); @@ -678,6 +694,98 @@ PHP_MINIT_FUNCTION(soap) REGISTER_LONG_CONSTANT("WSDL_CACHE_MEMORY", WSDL_CACHE_MEMORY, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("WSDL_CACHE_BOTH", WSDL_CACHE_BOTH, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "SOAP_1_1", SOAP_1_1, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "SOAP_1_2", SOAP_1_2, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "PERSISTENCE_SESSION", SOAP_PERSISTENCE_SESSION, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "PERSISTENCE_REQUEST", SOAP_PERSISTENCE_REQUEST, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "FUNCTIONS_ALL", SOAP_FUNCTIONS_ALL, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "ENCODED", SOAP_ENCODED, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "LITERAL", SOAP_LITERAL, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "RPC", SOAP_RPC, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "DOCUMENT", SOAP_DOCUMENT, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "ACTOR_NEXT", SOAP_ACTOR_NEXT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "ACTOR_NONE", SOAP_ACTOR_NONE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "ACTOR_UNLIMATERECEIVER", SOAP_ACTOR_UNLIMATERECEIVER, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "COMPRESSION_ACCEPT", SOAP_COMPRESSION_ACCEPT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "COMPRESSION_GZIP", SOAP_COMPRESSION_GZIP, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "COMPRESSION_DEFLATE", SOAP_COMPRESSION_DEFLATE, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "AUTHENTICATION_BASIC", SOAP_AUTHENTICATION_BASIC, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "AUTHENTICATION_DIGEST", SOAP_AUTHENTICATION_DIGEST, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "UNKNOWN_TYPE", UNKNOWN_TYPE, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_STRING", XSD_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_BOOLEAN", XSD_BOOLEAN, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_DECIMAL", XSD_DECIMAL, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_FLOAT", XSD_FLOAT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_DOUBLE", XSD_DOUBLE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_DURATION", XSD_DURATION, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_DATETIME", XSD_DATETIME, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_TIME", XSD_TIME, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_DATE", XSD_DATE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_GYEARMONTH", XSD_GYEARMONTH, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_GYEAR", XSD_GYEAR, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_GMONTHDAY", XSD_GMONTHDAY, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_GDAY", XSD_GDAY, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_GMONTH", XSD_GMONTH, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_HEXBINARY", XSD_HEXBINARY, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_BASE64BINARY", XSD_BASE64BINARY, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_ANYURI", XSD_ANYURI, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_QNAME", XSD_QNAME, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NOTATION", XSD_NOTATION, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NORMALIZEDSTRING", XSD_NORMALIZEDSTRING, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_TOKEN", XSD_TOKEN, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_LANGUAGE", XSD_LANGUAGE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NMTOKEN", XSD_NMTOKEN, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NAME", XSD_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NCNAME", XSD_NCNAME, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_ID", XSD_ID, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_IDREF", XSD_IDREF, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_IDREFS", XSD_IDREFS, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_ENTITY", XSD_ENTITY, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_ENTITIES", XSD_ENTITIES, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_INTEGER", XSD_INTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NONPOSITIVEINTEGER", XSD_NONPOSITIVEINTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NEGATIVEINTEGER", XSD_NEGATIVEINTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_LONG", XSD_LONG, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_INT", XSD_INT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_SHORT", XSD_SHORT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_BYTE", XSD_BYTE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NONNEGATIVEINTEGER", XSD_NONNEGATIVEINTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_UNSIGNEDLONG", XSD_UNSIGNEDLONG, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_UNSIGNEDINT", XSD_UNSIGNEDINT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_UNSIGNEDSHORT", XSD_UNSIGNEDSHORT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_UNSIGNEDBYTE", XSD_UNSIGNEDBYTE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_POSITIVEINTEGER", XSD_POSITIVEINTEGER, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NMTOKENS", XSD_NMTOKENS, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_ANYTYPE", XSD_ANYTYPE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_ANYXML", XSD_ANYXML, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "APACHE_MAP", APACHE_MAP, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "ENC_OBJECT", SOAP_ENC_OBJECT, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "ENC_ARRAY", SOAP_ENC_ARRAY, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_1999_TIMEINSTANT", XSD_1999_TIMEINSTANT, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_STRING_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_NAMESPACE", XSD_NAMESPACE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_STRING_CONSTANT(PHP_SOAP_NAMESPACE, "XSD_1999_NAMESPACE", XSD_1999_NAMESPACE, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "SINGLE_ELEMENT_ARRAYS", SOAP_SINGLE_ELEMENT_ARRAYS, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "WAIT_ONE_WAY_CALLS", SOAP_WAIT_ONE_WAY_CALLS, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "USE_XSI_ARRAY_TYPE", SOAP_USE_XSI_ARRAY_TYPE, CONST_CS | CONST_PERSISTENT); + + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "WSDL_CACHE_NONE", WSDL_CACHE_NONE, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "WSDL_CACHE_DISK", WSDL_CACHE_DISK, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "WSDL_CACHE_MEMORY", WSDL_CACHE_MEMORY, CONST_CS | CONST_PERSISTENT); + REGISTER_NS_LONG_CONSTANT(PHP_SOAP_NAMESPACE, "WSDL_CACHE_BOTH", WSDL_CACHE_BOTH, CONST_CS | CONST_PERSISTENT); + old_error_handler = zend_error_cb; zend_error_cb = soap_error_handler; @@ -696,7 +804,7 @@ PHP_MINFO_FUNCTION(soap) /* {{{ proto object SoapParam::SoapParam ( mixed data, string name) SoapParam constructor */ -PHP_METHOD(SoapParam, SoapParam) +PHP_METHOD(SoapParam, __construct) { zval *data; char *name; @@ -720,7 +828,7 @@ PHP_METHOD(SoapParam, SoapParam) /* {{{ proto object SoapHeader::SoapHeader ( string namespace, string name [, mixed data [, bool mustUnderstand [, mixed actor]]]) SoapHeader constructor */ -PHP_METHOD(SoapHeader, SoapHeader) +PHP_METHOD(SoapHeader, __construct) { zval *data = NULL, *actor = NULL; char *name, *ns; @@ -761,7 +869,7 @@ PHP_METHOD(SoapHeader, SoapHeader) /* {{{ proto object SoapFault::SoapFault ( string faultcode, string faultstring [, string faultactor [, mixed detail [, string faultname [, mixed headerfault]]]]) SoapFault constructor */ -PHP_METHOD(SoapFault, SoapFault) +PHP_METHOD(SoapFault, __construct) { char *fault_string = NULL, *fault_code = NULL, *fault_actor = NULL, *name = NULL, *fault_code_ns = NULL; int fault_string_len, fault_actor_len, name_len, fault_code_len = 0; @@ -857,7 +965,7 @@ PHP_METHOD(SoapFault, __toString) /* {{{ proto object SoapVar::SoapVar ( mixed data, int encoding [, string type_name [, string type_namespace [, string node_name [, string node_namespace]]]]) SoapVar constructor */ -PHP_METHOD(SoapVar, SoapVar) +PHP_METHOD(SoapVar, __construct) { zval *data, *type; char *stype = NULL, *ns = NULL, *name = NULL, *namens = NULL; @@ -1018,7 +1126,7 @@ static HashTable* soap_create_typemap(sd /* {{{ proto object SoapServer::SoapServer ( mixed wsdl [, array options]) SoapServer constructor */ -PHP_METHOD(SoapServer, SoapServer) +PHP_METHOD(SoapServer, __construct) { soapServicePtr service; zval *wsdl, *options = NULL; @@ -2291,7 +2399,7 @@ PHP_FUNCTION(is_soap_fault) /* {{{ proto object SoapClient::SoapClient ( mixed wsdl [, array options]) SoapClient constructor */ -PHP_METHOD(SoapClient, SoapClient) +PHP_METHOD(SoapClient, __construct) { zval *wsdl; --------------070000060208040004090008--