指向功能的指针

时间:2013-10-04 01:18:03

标签: php

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

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

但我想做一点概括!

我想以允许我将它们注册为函数并直接调用它们的方式将方法传递给构造函数!

我已经在C中看到了这一点,我相信它可以用PHP制作!

任何人都可以给我一个提示吗?

在Waleed Khan的帮助下,经过更多的研究,我发现了如何做到这一点!

在使用我的类的文件上我使用了这个

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

这样构造函数获取webservice的方法列表并创建一个匿名函数,该函数调用webservice的通用处理程序。为了进行该调用,我使用变量$ eu wich指向该类,并在匿名函数中使用

2 个答案:

答案 0 :(得分:0)

感谢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参数

感谢您的帮助!

答案 1 :(得分:0)

只需在invokation中注释调用者的重复,并在课程中添加一个愚蠢的行!

呼叫者:

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

类别:

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

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