Это на самом деле интересный вопрос, потому что он поднимает некоторые полезные идеи.
Если бы, например, ножницы из бумаги следовали законам математического неравенства , это была бы тривиальная проблема. Скажем, paper > rock > scissors
является математически истинно (то есть paper > scissors
, вопреки правилам игры):
class fist(object):
def __init__(self, weapon):
WEAPON_VALUES = {'paper': 2, 'rock': 1, 'scissors': 0}
self.weapon_value = WEAPON_VALUES[weapon]
def __gt__(self, other):
return self.weapon_value > other.weapon_value
def __lt__(self, other):
return self.weapon_value < other.weapon_value
def __eq__(self, other):
return self.weapon_value == other.weapon_value
def __ne__(self, other):
return self.weapon_value != other.weapon_value
paper = fist('paper')
rock = fist('rock')
scissors = fist('scissors')
Теперь мы можем проверить:
In [7]: paper > rock
Out[7]: True
In [8]: rock == rock
Out[8]: True
In [9]: paper < scissors
Out[9]: False
In [10]: scissors < rock
Out[10]: True
[ 1114] К сожалению, бумага-ножницы-камень имеет круговую логику, и поэтому обычное понятие неравенства в этом случае не работает (следовательно, paper < scissors
оценивается как False
).
Вы можете использовать пользовательские сопоставимые , как объяснено в другом ответе , но имейте в виду, что это вызывает парадоксы, такие как rock > scissors > paper == True
, когда, конечно, rock < paper
.
Если протокол, который Вы используете, является XML-RPC (похож на него на основе того, что Вы сказали), и Вы используете, по крайней мере, PHP 4.2, взглянули на http://phpxmlrpc.sourceforge.net/ для библиотек и ресурсов.
Используйте класс SoapClient, которому предоставляют большинство установок PHP
Пример:
$soap = new SoapClient("http://some.url/service/some.wsdl");
$args = array("someTypeName" => "someTypeValue"
"someOtherTypeName" => "someOtherTypeValue");
$response = $soap->executeSomeService($args);
print_r($response);
$ch = curl_init($serviceUrl);
if( $this -> usingHTTPS() )
{
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $this->sslVerifyHost);
}
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "OTA_request=".urlencode($this->xmlMessage));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$this->xmlResponse = curl_exec ($ch);
$this -> callerFactory -> dbgMsg('xmlResponse: <hr><pre>'.htmlentities($this->xmlResponse).'</pre><hr>'. curl_error($ch));
curl_close ($ch);
$this->checkResponse();