Мне нужно позвонить в службу мыла с помощью laravel и сделать это правильно. Для этой услуги мыла требуется отправить запрос на вход до отправки любого другого запроса.Как вызвать функцию внутри одного контроллера?
Код, который я использую, работает, но я хочу улучшить, удалив логин из всех функций и создав одну функцию. Я попытался изменить следующие для одной функции:
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, но я, вероятно, воспользовался им неправильно?
Так что мой вопрос: как повторно использовать часть входа для всех других функций?