#include "php_soap.h"
int le_sdl = 0;
int le_http_socket = 0;
int le_url = 0;
int le_service = 0;
// Local functions
static void function_to_string(sdlFunctionPtr function, smart_str *buf);
static void type_to_string(sdlTypePtr type, smart_str *buf, int level);
static zend_class_entry soap_class_entry;
static zend_class_entry soap_server_class_entry;
static zend_class_entry soap_fault_class_entry;
zend_class_entry soap_var_class_entry;
zend_class_entry soap_param_class_entry;
ZEND_DECLARE_MODULE_GLOBALS(soap);
static void (*old_handler)(int, const char *, const uint, const char*, va_list);
static zend_function_entry soap_functions[] = {
#ifdef HAVE_PHP_DOMXML
PHP_FE(soap_encode_to_xml, NULL)
PHP_FE(soap_encode_to_zval, NULL)
#endif
{NULL, NULL, NULL}
};
static zend_function_entry soap_fault_functions[] = {
PHP_FE(soapfault, NULL)
{NULL, NULL, NULL}
};
static zend_function_entry soap_server_functions[] = {
PHP_FE(soapserver,NULL)
PHP_FE(setpersistence,NULL)
PHP_FE(setclass,NULL)
PHP_FE(addfunction,NULL)
PHP_FE(getfunctions,NULL)
PHP_FE(handle,NULL)
PHP_FE(bind,NULL)
#ifdef HAVE_PHP_DOMXML
PHP_FE(map, NULL)
#endif
{NULL, NULL, NULL}
};
static zend_function_entry soap_client_functions[] = {
PHP_FE(soapobject, NULL)
PHP_FE(__isfault, NULL)
PHP_FE(__getfault, NULL)
PHP_FE(__call, NULL)
#ifdef PHP_DEBUG
PHP_FE(__getlastrequest, NULL)
PHP_FE(__getlastresponse, NULL)
PHP_FE(__getfunctions, NULL)
PHP_FE(__gettypes, NULL)
#endif
{NULL, NULL, NULL}
};
static zend_function_entry soap_var_functions[] = {
PHP_FE(soapvar, NULL)
{NULL, NULL, NULL}
};
static zend_function_entry soap_param_functions[] = {
PHP_FE(soapparam, NULL)
{NULL, NULL, NULL}
};
zend_module_entry soap_module_entry = {
#ifdef STANDARD_MODULE_HEADER
STANDARD_MODULE_HEADER,
#endif
"soap",
soap_functions,
PHP_MINIT(soap),
PHP_MSHUTDOWN(soap),
NULL,
NULL,
PHP_MINFO(soap),
#ifdef STANDARD_MODULE_HEADER
NO_VERSION_YET,
#endif
STANDARD_MODULE_PROPERTIES,
};
#ifdef COMPILE_DL_SOAP
ZEND_GET_MODULE(soap)
#endif
static void php_soap_init_globals(zend_soap_globals *soap_globals)
{
int i;
long enc;
soap_globals->sdls = malloc(sizeof(HashTable));
zend_hash_init(soap_globals->sdls, 0, NULL, delete_sdl, 1);
soap_globals->services = malloc(sizeof(HashTable));
zend_hash_init(soap_globals->services, 0, NULL, delete_service, 1);
soap_globals->defEnc = malloc(sizeof(HashTable));
zend_hash_init(soap_globals->defEnc, 0, NULL, NULL, 1);
soap_globals->defEncIndex = malloc(sizeof(HashTable));
zend_hash_init(soap_globals->defEncIndex, 0, NULL, NULL, 1);
soap_globals->defEncNs = malloc(sizeof(HashTable));
zend_hash_init(soap_globals->defEncNs, 0, NULL, NULL, 1);
soap_globals->defEncPrefix = malloc(sizeof(HashTable));
zend_hash_init(soap_globals->defEncPrefix, 0, NULL, NULL, 1);
soap_globals->overrides = NULL;
i = 0;
do
{
enc = (long)&defaultEncoding[i];
//If has a ns and a str_type then index it
if(defaultEncoding[i].details.type_str)
{
if(defaultEncoding[i].details.ns != NULL)
{
char *ns_type;
ns_type = emalloc(strlen(defaultEncoding[i].details.ns) + strlen(defaultEncoding[i].details.type_str) + 2);
sprintf(ns_type, "%s:%s", defaultEncoding[i].details.ns, defaultEncoding[i].details.type_str);
zend_hash_add(soap_globals->defEnc, ns_type, strlen(ns_type), &enc, sizeof(encodePtr), NULL);
efree(ns_type);
}
else
{
zend_hash_add(soap_globals->defEnc, defaultEncoding[i].details.type_str, strlen(defaultEncoding[i].details.type_str), &enc, sizeof(encodePtr), NULL);
}
}
//Index everything by number
zend_hash_index_update(soap_globals->defEncIndex, defaultEncoding[i].details.type, &enc, sizeof(encodePtr), NULL);
i++;
}
while(defaultEncoding[i].details.type != END_KNOWN_TYPES);
//hash by namespace
zend_hash_add(soap_globals->defEncNs, XSD_1999_NAMESPACE, sizeof(XSD_1999_NAMESPACE), XSD_NS_PREFIX, sizeof(XSD_NS_PREFIX), NULL);
zend_hash_add(soap_globals->defEncNs, XSD_NAMESPACE, sizeof(XSD_NAMESPACE), XSD_NS_PREFIX, sizeof(XSD_NS_PREFIX), NULL);
zend_hash_add(soap_globals->defEncNs, APACHE_NAMESPACE, sizeof(APACHE_NAMESPACE), APACHE_NS_PREFIX, sizeof(APACHE_NS_PREFIX), NULL);
zend_hash_add(soap_globals->defEncNs, SOAP_ENC_NAMESPACE, sizeof(SOAP_ENC_NAMESPACE), SOAP_ENC_NS_PREFIX, sizeof(SOAP_ENC_NS_PREFIX), NULL);
//and by prefix
zend_hash_add(soap_globals->defEncPrefix, XSD_NS_PREFIX, sizeof(XSD_NS_PREFIX), XSD_NAMESPACE, sizeof(XSD_NAMESPACE), NULL);
zend_hash_add(soap_globals->defEncPrefix, APACHE_NS_PREFIX, sizeof(APACHE_NS_PREFIX), APACHE_NAMESPACE, sizeof(APACHE_NAMESPACE), NULL);
zend_hash_add(soap_globals->defEncPrefix, SOAP_ENC_NS_PREFIX, sizeof(SOAP_ENC_NS_PREFIX), SOAP_ENC_NAMESPACE, sizeof(SOAP_ENC_NAMESPACE), NULL);
}
static void php_soap_del_globals(zend_soap_globals *soap_globals)
{
/* zend_hash_destroy(soap_globals->sdls);
zend_hash_destroy(soap_globals->services);
zend_hash_destroy(soap_globals->defEnc);
zend_hash_destroy(soap_globals->defEncIndex);
zend_hash_destroy(soap_globals->defEncNs);*/
}
PHP_MSHUTDOWN_FUNCTION(soap)
{
zend_hash_destroy(SOAP_GLOBAL(sdls));
zend_hash_destroy(SOAP_GLOBAL(services));
zend_hash_destroy(SOAP_GLOBAL(defEnc));
zend_hash_destroy(SOAP_GLOBAL(defEncIndex));
zend_hash_destroy(SOAP_GLOBAL(defEncNs));
zend_hash_destroy(SOAP_GLOBAL(defEncPrefix));
return SUCCESS;
}
PHP_MINIT_FUNCTION(soap)
{
//TODO: add ini entry for always use soap errors
ZEND_INIT_MODULE_GLOBALS(soap, php_soap_init_globals, php_soap_del_globals);
//Register SoapObject class
INIT_OVERLOADED_CLASS_ENTRY(soap_class_entry, PHP_SOAP_CLASSNAME, soap_client_functions, soap_call_function_handler, NULL, NULL);
zend_register_internal_class(&soap_class_entry TSRMLS_CC);
//Register SoapVar class
INIT_CLASS_ENTRY(soap_var_class_entry, PHP_SOAP_VAR_CLASSNAME, soap_var_functions);
zend_register_internal_class(&soap_var_class_entry TSRMLS_CC);
//Register SoapServer class
INIT_CLASS_ENTRY(soap_server_class_entry, PHP_SOAP_SERVER_CLASSNAME, soap_server_functions);
zend_register_internal_class(&soap_server_class_entry TSRMLS_CC);
//Register SoapFault class
INIT_CLASS_ENTRY(soap_fault_class_entry, PHP_SOAP_FAULT_CLASSNAME, soap_fault_functions);
zend_register_internal_class(&soap_fault_class_entry TSRMLS_CC);
//Register SoapParam class
INIT_CLASS_ENTRY(soap_param_class_entry, PHP_SOAP_PARAM_CLASSNAME, soap_param_functions);
zend_register_internal_class(&soap_param_class_entry TSRMLS_CC);
le_sdl = register_list_destructors(NULL, NULL);
le_http_socket = register_list_destructors(delete_http_socket, NULL);
le_url = register_list_destructors(delete_url, NULL);
le_service = register_list_destructors(delete_service, NULL);
REGISTER_LONG_CONSTANT("SOAP_PERSISTENCE_SESSION", SOAP_PERSISTENCE_SESSION, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SOAP_PERSISTENCE_REQUEST", SOAP_PERSISTENCE_REQUEST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SOAP_FUNCTIONS_ALL", SOAP_FUNCTIONS_ALL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_1999_TIMEINSTANT", XSD_1999_TIMEINSTANT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("UNKNOWN_TYPE", UNKNOWN_TYPE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SOAP_ENC_OBJECT", SOAP_ENC_OBJECT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SOAP_ENC_ARRAY", SOAP_ENC_ARRAY, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_STRING", XSD_STRING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_BOOLEAN", XSD_BOOLEAN, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_DECIMAL", XSD_DECIMAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_FLOAT", XSD_FLOAT, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_DOUBLE", XSD_DOUBLE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_DURATION", XSD_DURATION, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("XSD_DATETIME", XSD_DATETIME, CONST_CS | CONST_PERSISTENT);
REGIS
没有合适的资源?快使用搜索试试~ 我知道了~
php-soap(web,server)
共36个文件
c:6个
h:6个
inc:5个
5星 · 超过95%的资源 需积分: 10 19 下载量 63 浏览量
2009-04-08
17:47:04
上传
评论 1
收藏 71KB ZIP 举报
温馨提示
This extension will allow you to create soap servers and soap clients using php scripting language.
资源推荐
资源详情
资源评论
收起资源包目录
php-soap_0.1.2.zip (36个子文件)
ext
soap
config.m4 551B
CVS
Entries 943B
Repository 9B
Root 73B
php_http.h 715B
php_schema.h 2KB
php_encoding.h 7KB
Makefile.in 310B
TODO 2KB
php_xml.c 3KB
soap.c 57KB
libs.mk 333B
php_sdl.h 2KB
php_soap.h 9KB
php_sdl.c 22KB
php_encoding.c 27KB
.#soap.c.1.11 57KB
php_http.c 15KB
EXPERIMENTAL 0B
php_soap.dsp 5KB
php_schema.c 24KB
php_xml.h 533B
wsdl
wsdltest.php 489B
DataTypes.inc 7KB
CVS
Entries 395B
Repository 14B
Root 73B
wsdl.php 197B
EventStack.inc 2KB
Parser.inc 23KB
WSDLGenerator.php 5KB
Publisher.inc 2KB
WordParser.inc 3KB
Makefile 530B
CHANGELOG 17B
.deps 0B
共 36 条
- 1
资源评论
- xpmozong2015-04-23不太好用啊
隐藏起来
- 粉丝: 13
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功