指向函数的指针


Pointer to functions

我创建了一个使用 SoapClient 对象的类,并在构造函数中接收 Web 服务 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指向该类并在匿名函数中使用

多亏了瓦利德汗的暗示,我能够继续追求我的问题的答案,这几乎完全解决了!

我在匿名函数中有一个额外的参数,有了它,我解决了我的问题!

我的代码现在是这样的:

$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);
    };
}

在网络服务类上!

我的下一步是使其成为单例,并希望能够退出额外的$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);
    };
}

现在我可以调用 Web 服务,就好像它只是另一个 PHP 类一样!