如何创建动态函数并调用该静态函数

问题描述 投票:0回答:1

如何使用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);
php soap nusoap soapserver
1个回答
0
投票

您可以使用此

$$SOAPACTION = function($name)
        {
            return array("Hello %s\r\n", $name);
        };
© www.soinside.com 2019 - 2024. All rights reserved.