我已经以程序方式编写了一个应用程序,并试图进入Laravel框架。我在使用SOAP交换部分时遇到问题,因为我得到一个ID值,用于验证用户,但在程序后面无法访问该值(作为cookie)以验证搜索。
到目前为止,这是我的代码:
$cookie
我成功从Web API调用中检索响应并获取用于对用户进行身份验证的代码,保存为SoapWrapper
。但是,我需要创建另一个__setCookie
来执行搜索,这需要使用authenticate
方法附加的ID代码。如果throttle.blade.php
调用未返回任何内容,则会通过其他地方的SoapClient
重定向到错误消息。
当然有一种方法可以返回从函数创建的值,以便可以在其他地方使用吗?
**编辑**
考虑使用<?php namespace App\Models;
use SoapClient;
use Illuminate\Http\RedirectResponse;
class SoapWrapper {
public function soapExchange() {
// set WSDL for authentication and create new SOAP client
$auth_url = "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl";
// array options are temporary and used to track request & response data
$auth_client = @new SoapClient($auth_url);
// set WSDL for search and create new SOAP client
$search_url = "http://search.webofknowledge.com/esti/wokmws/ws/WokSearch?wsdl";
// array options are temporary and used to track request & response data
$search_client = @new SoapClient($search_url);
// run 'authenticate' method and store as variable
$auth_response = $auth_client->authenticate();
// call 'setCookie' method on '$search_client' storing SID (Session ID) as the response (value) given from the 'authenticate' method
// check if an SID has been set, if not it means Throttle server has stopped the query, therefore display error message
if (isset($auth_response->return)) {
$search_client->__setCookie('SID',$auth_response->return);
} else {
return Redirect::route('throttle');
}
}
}
代替并在单个函数中包含所有操作。无论如何,这一切都与特定的Web API有关,因此我认为关注点的分离并不是一个问题。仅供参考我正在尝试的新课程:
<P id="testview"></P>
答案 0 :(得分:3)
也许试试$ GLOBALS?
<?php
$GLOBALS[data] = "something";
function abc(){
echo $GLOBALS[data];
}
?>