From 962ab19c992019c0e650e8cd0a2855a5d526e80c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 5 May 2004 10:52:33 +0000 Subject: [PATCH] Support for classes with __call() method on server side. --- ext/soap/soap.c | 4 +++- ext/soap/tests/server021.phpt | 40 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 ext/soap/tests/server021.phpt diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 158544a56a..6c4ff14d2a 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1513,7 +1513,9 @@ PHP_METHOD(SoapServer, handle) } fn_name = estrndup(Z_STRVAL(function_name),Z_STRLEN(function_name)); - if (zend_hash_exists(function_table, php_strtolower(fn_name, Z_STRLEN(function_name)), Z_STRLEN(function_name) + 1)) { + if (zend_hash_exists(function_table, php_strtolower(fn_name, Z_STRLEN(function_name)), Z_STRLEN(function_name) + 1) || + (service->type == SOAP_CLASS && + zend_hash_exists(function_table, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME)))) { if (service->type == SOAP_CLASS) { call_status = call_user_function(NULL, &soap_obj, &function_name, &retval, num_params, params TSRMLS_CC); #if HAVE_PHP_SESSION diff --git a/ext/soap/tests/server021.phpt b/ext/soap/tests/server021.phpt new file mode 100644 index 0000000000..d557204b5f --- /dev/null +++ b/ext/soap/tests/server021.phpt @@ -0,0 +1,40 @@ +--TEST-- +SOAP Server 21: SoapServer::setClass and __call() +--SKIPIF-- + +--FILE-- +"http://testuri.org")); +$server->setclass("Foo"); + +$HTTP_RAW_POST_DATA = << + + + + + +EOF; + +$server->handle(); +echo "ok\n"; +?> +--EXPECT-- + +Hello World +ok -- 2.50.1