最近遇到了短路评估,并且对此感到有点困惑,因为我上周才开始编程。据我了解,如果第一个双管之前发生的事情是真的,那么它将停止并且不评估双管之后发生的事情。例如:
示例1:
var a = true;
var b = a || {};
Run Code Online (Sandbox Code Playgroud)
所以我假设如果 a 存在,则将 a 分配给 b 否则 b 等于一个对象。我不明白的是我将在哪里使用它以及它与三元运算符有何不同,短路评估是否与以下相同:
示例2:
var a = true;
var b = (a) ? a : {};
Run Code Online (Sandbox Code Playgroud)
为什么要使用示例 1 而不是示例 2,因为它的写出速度并没有变慢,或者使用其中一种比另一种有速度优势吗?或者这只是一个愚蠢的问题,也许我错过了一些东西。如果有人能为我解决这个问题那就太好了。
最近可以访问酒店管理服务的soap API。他们提供了显示请求的基本示例的文档:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<Auth xmlns="http://xxxx/xxxxAPI">
<FromSystemId ID="1">CompanyName</FromSystemId>
<UserName>username</UserName>
<Password>password</Password>
</Auth>
</soapenv:Header>
<soapenv:Body>
<GetRegions Timestamp="2016-04-11" Version="1.0" Lang="en"
xmlns="http://xxxx/xxxxAPI">
<Country Code="GB" />
</GetRegions>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
他们还在其文档中提供了功能列表以及每个功能所需的参数。但是我对如何执行请求感到有些困惑,因为我以前从未使用过soap API。他们也没有提供 WSDL,这有关系吗?
无论如何,这是我想尝试执行请求的方式
$soapURL = "http://xxxx/xxxxAPI" ;
$soapParameters = Array('login' => "username", 'password' => "password") ;
$soapFunction = "getRegions";
$soapFunctionParameters = Array('countrycode' => 'GB');
$soapClient = new SoapClient($soapURL, $soapParameters);
$soapResult = $soapClient->__soapCall($soapFunction,
$soapFunctionParameters) ;
if(is_array($soapResult) && isset($soapResult['someFunctionResult'])) {
// Process result.
} else {
// Unexpected result
if(function_exists("debug_message")) {
debug_message("Unexpected soapResult for {$soapFunction}: ".print_r($soapResult, …Run Code Online (Sandbox Code Playgroud)