2015-11-15 2 views
0

Мне нужно позвонить в службу мыла с помощью 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, но я, вероятно, воспользовался им неправильно?

Так что мой вопрос: как повторно использовать часть входа для всех других функций?

ответ

1

Ваш оператор возврата в методе login() входит в сферу действия этого закрытия. Вам также нужно вернуть результат закрытия.

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

EDIT: Чтобы объяснить немного. У вас есть функция:

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

Внутри функции: public function login()

Если вам необходимо возвращать данные из вашего метода login(), и что данные, содержащиеся в вашем методе SoapWrapper::service(), то оба метода нуждающемуся return заявление