【问题标题】:How to call a function within the same controller?如何在同一个控制器中调用函数?
【发布时间】:2016-02-16 16:53:40
【问题描述】:

我必须使用 laravel 调用一个肥皂服务,并且这样做是正确的。此soap 服务要求我在发送任何其他请求之前发送登录请求。

我使用的代码有效,但我想通过从所有函数中删除登录并创建一个函数来改进。 我尝试为一个功能更改以下内容:

public function getcard($cardid)
{
SoapWrapper::add(function ($service) {
   $service
   ->name('IS')
   ->wsdl(app_path().'\giftcard.wsdl')
   ->trace(true);
 });
$data = [
     'UserName' => 'xxxx',
     'Password'   => 'xxxx',
    ];
$card = [
     'CardId' => $cardid,
     ];
SoapWrapper::service('IS', function ($service) use ($data,$card) {
$service->call('Login', [$data]);
$cardinfo=$service->call('GetCard', [$card]);
dd($cardinfo->Card);
});
}

进入:

public function login()
{
SoapWrapper::add(function ($service) {
    $service
    ->name('IS')
    ->wsdl(app_path().'\giftcard.wsdl')
    ->trace(true);
});
$data = [
     'UserName' => 'xxxx',
     'Password'   => 'xxxx',
    ];
SoapWrapper::service('IS', function ($service) use ($data) {
return $service->call('Login', [$data]);
//$service->call('Login', [$data]);
//return $service;
});
}

public function getcard($cardid)
{
$this->login();
$card = [
     'CardId' => $cardid,
    ];
$cardinfo=$service->call('GetCard', [$card]);
dd($card);
}

但这不起作用。我也尝试了注释掉的部分,但这不起作用。这两个选项都会导致错误,它没有找到“服务”。 我知道它与 oop 有关,但不知道任何其他选项。

我以this为例,但我可能实现错了?

所以我的问题是:如何将登录部分重用于所有其他功能?

【问题讨论】:

    标签: oop soap controller wsdl laravel-5.1


    【解决方案1】:

    login() 方法中的 return 语句在该闭包的范围内。您还需要返回关闭的结果。

    return SoapWrapper::service('IS', function ($service) use ($data) {
         return $service->call('Login', [$data]);
    });
    

    编辑: 稍微解释一下。你有一个函数:

    SoapWrapper::service('IS' ,function() {}

    函数内部:public function login()

    如果您需要从您的login() 方法返回数据,并且该数据包含在您的SoapWrapper::service() 方法中,那么这两种方法都需要return 语句

    【讨论】:

      猜你喜欢
      • 2019-02-07
      • 2015-02-06
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多