laravel可以';无法在包装器之外获得响应


laravel-can't get the response outside of the wrapper

全部,

我正在努力https://github.com/artisaninweb/laravel-soap工作,但没有爱情。这可能不是包的问题,而是我对PHP的理解存在差距(我已经好几年没有使用PHP了)。

医生说:

SoapWrapper::add(function ($service) {
    $service->name('currency')->wsdl('http://currencyconverter.kowabunga.net/converter.asmx?WSDL');
});
$data = [
    'CurrencyFrom' => 'USD',
    'CurrencyTo'   => 'EUR',
    'RateDate'     => '2014-06-05',
    'Amount'       => '1000'
];
SoapWrapper::service('currency',function($service) use ($data) {
    var_dump($service->getFunctions());
    var_dump($service->call('GetConversionAmount',$data)->GetConversionAmountResult);
});

现在一切都很好。。。但是我究竟是如何从$service->call得到响应的。。。退出我的应用程序?

我试过

$response = SoapWrapper::service('currency',function($service) use ($data) {
    $service->call('GetConversionAmount',$data)->GetConversionAmountResult;
});

但这只是返回soap客户端响应。

我试过:

$response = '';
SoapWrapper::service('currency',function($service) use ($data) {
    $response = $service->call('GetConversionAmount',$data)->GetConversionAmountResult;
});

但这并没有什么作用,因为包装器调用中的任何东西似乎都只存在于该块中。

它们实际上是我唯一能想到做的两件事,因为我对Laravel中出现的所有这些单例呼叫都不太熟悉(我也认为应该像瘟疫一样避免它们)。

如有任何帮助,我们将不胜感激。

我是laravel soap包的创建者。你可以这样返回数据:
$response = '';
$data = [
    'CurrencyFrom' => 'USD',
    'CurrencyTo'   => 'EUR',
    'RateDate'     => '2014-06-05',
    'Amount'       => '1000'
];
SoapWrapper::service('currency',function($service) use ($data,&$response) {
    $response = $service->call('GetConversionAmount',$data)->GetConversionAmountResult;
});
var_dump($response);

这称为通过引用传递:http://php.net/manual/en/language.references.pass.php我发现laravel soap包有一些问题,请在Github上创建一个问题。