Php 指向函数的指针

Php 指向函数的指针,php,Php,我创建了一个使用SoapClient对象的类,并在构造函数中接收webservice url以及方法和响应之间的关联 有了它,我就有了一个只接收方法及其参数的调用函数 但我想做更多的概括 我想把这些方法传递给构造函数,让我可以将它们注册为函数并直接调用它们 我已经在C语言中看到了这一点,我相信它可以在PHP中实现 谁能给我一个提示吗 在瓦利德·汗的帮助下,经过更多的研究,我已经找到了如何做到这一点 在使用我的类的文件上,我使用 $webs=new WebserviceCLS('webservic

我创建了一个使用SoapClient对象的类,并在构造函数中接收webservice url以及方法和响应之间的关联

有了它,我就有了一个只接收方法及其参数的调用函数

但我想做更多的概括

我想把这些方法传递给构造函数,让我可以将它们注册为函数并直接调用它们

我已经在C语言中看到了这一点,我相信它可以在PHP中实现

谁能给我一个提示吗

在瓦利德·汗的帮助下,经过更多的研究,我已经找到了如何做到这一点

在使用我的类的文件上,我使用

$webs=new WebserviceCLS('webserviceIP',array("GetData"=>"GetDataResult"),array("GetData"));

$webs->metodo['GetData']($webs,array ("idData" => "98745684"));
在我使用的类的构造函数中

foreach($met as $v)
{
    $eu = $this;
    $this->metodo[$v]= function($param) use($v,$eu)
    {
        $eu->call($v,$param);
    };
}

通过这种方式,构造函数获取Web服务的方法列表,并生成一个匿名函数来调用Web服务的通用处理程序。为了进行调用,我使用变量$eu wich指向该类,并在匿名函数中使用该变量

多亏了Waleed Khan的提示,我能够继续寻找我问题的答案,这个问题几乎完全解决了

我为匿名函数添加了一个额外的参数,用它解决了我的问题

我的代码是:

$webs=new WebserviceCLS('http://94.46.227.3/alidata/service.asmx?    WSDL',array("GetCliente"=>"GetClienteResult"),array("GetCliente"));

$webs->metodo['GetCliente']($webs,array ("idCliente" => "98745684"));
在消费者方面

这是:

foreach($met as $v)
{
    $this->metodo[$v]= function($obj,$param) use($v);
    {
        $obj->call($v,$param);
    };
}
在webservice类上

我的下一步是使其成为单例,并希望能够退出额外的$obj参数


谢谢你的帮助

只需在调用中注释调用方的重复,并在类中添加一行愚蠢的代码即可

来电者:

$webs->metodo['GetCliente'](array ("idCliente" => "98745684"));
类别:

foreach($met as $v)
{
    $eu = $this;
    $this->metodo[$v]= function($param) use($v,$eu)
    {
        $eu->call($v,$param);
    };
}

现在我可以像调用另一个PHP类一样调用webservices了

PHP自5.3版允许你创建和传递,所有最新版本的PHP都允许你传递一个字符串名,然后你可以像调用函数名一样调用它。在PHP 5.4中,你也可以。我当前的问题是调用匿名函数父函数中的函数!有什么提示吗?我不明白为什么它离题了!我努力解决我的问题!我甚至对它作出了回应!校正我不能把它作为一个单独的例子,因为我可能需要使用来自多个URL的多个Web服务!但是我仍然需要去掉那个额外的参数!有没有办法通过被调用的匿名函数调用调用方对象?