如何在同一个控制器中调用一个函数?
How to call a function within the same controller?
我必须使用 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);
}
但这行不通。我也尝试了注释掉的部分,但那不起作用。这两个选项都会导致错误,即找不到 'service'。
我知道它与 oop 有关,但不知道任何其他选项。
我以this为例,但我可能执行错了?
所以我的问题是:如何将登录部分重新用于所有其他功能?
您在 login()
方法中的 return 语句在该闭包的范围内。您还需要 return 闭包的结果。
return SoapWrapper::service('IS', function ($service) use ($data) {
return $service->call('Login', [$data]);
});
编辑:
稍微解释一下。你有一个功能:
SoapWrapper::service('IS' ,function() {}
函数内部:public function login()
如果您需要 return 来自您的 login()
方法的数据,并且该数据包含在您的 SoapWrapper::service()
方法中,那么这两种方法都需要一个 return
语句
我必须使用 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);
}
但这行不通。我也尝试了注释掉的部分,但那不起作用。这两个选项都会导致错误,即找不到 'service'。 我知道它与 oop 有关,但不知道任何其他选项。
我以this为例,但我可能执行错了?
所以我的问题是:如何将登录部分重新用于所有其他功能?
您在 login()
方法中的 return 语句在该闭包的范围内。您还需要 return 闭包的结果。
return SoapWrapper::service('IS', function ($service) use ($data) {
return $service->call('Login', [$data]);
});
编辑: 稍微解释一下。你有一个功能:
SoapWrapper::service('IS' ,function() {}
函数内部:public function login()
如果您需要 return 来自您的 login()
方法的数据,并且该数据包含在您的 SoapWrapper::service()
方法中,那么这两种方法都需要一个 return
语句