如何使用php创建动态函数并调用该静态函数?
我创建新的soap服务器并通过数组注册方法。 (方法太多)例如,我创建了一个动态调用我的函数,但该函数仅在使用变量值(例如$ SOAPACTION('sssss'))调用该函数时才起作用;而不适合像我('sssss')这样的静态呼叫;我也尝试过create_function方法(在php 7中已弃用)但无法正常工作。我在呼叫我的函数时遇到以下错误:
method 'me' not defined in service
是否有任何定义可以由soap服务器调用的功能的想法?
$response = array(
'me' => array(
array(
'accesskey'=>'xsd:string',
'username'=>'xsd:string',
'extra'=>'xsd:string',
,,,,,,,,
), 'POST'),
,,,,,,,,
);
if (isset($_SERVER['HTTP_SOAPACTION'])) {
$SOAPACTION = str_replace('"','',str_replace("urn:server#","",$_SERVER['HTTP_SOAPACTION']));
if (array_key_exists($SOAPACTION, $response)) {
$functionName = $SOAPACTION;
$SOAPACTION = function($name)
{
return array("Hello %s\r\n", $name);
};
}
}
$server = new soap_server;
$server->soap_defencoding = 'UTF-8';
$server->decode_utf8 = false;
$server->encode_utf8 = true;
$server->configureWSDL('APIv2');
foreach ($response as $key => $value) {
$server->register($key, $value[0], //parameters
array(
'return' => 'xsd:string'
), //output
'urn:server', //namespace
'urn:server#' . $key, //soapaction
'rpc', // style
'encoded', // use
$value[1]); //description
}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
您可以使用此
$$SOAPACTION = function($name)
{
return array("Hello %s\r\n", $name);
};