这是我第一次发帖,如果我不是很清楚,请原谅我.我还将通过说明我对PHP和Web服务知之甚少来作为序言.
我遇到的问题是:
SOAP请求由外部源(客户端)生成,然后发送到我的php SOAP服务器.当服务器收到请求时,它根本就不正确.数据包嗅探器显示请求在到达运行php服务器的计算机时看起来正确.但是,出于某种原因,只要soap服务器收到请求,它就会搞砸了.
真正奇怪的是,仅在一周前,这段代码运行良好.自那时以来没有任何变化.这已在3台不同的机器上尝试过,其中一台机器运行不同版本的php(并处于不同的状态!).其中一台机器在经过一些成功的测试后不久就关闭了,然后在这个问题出现之后立即打开了.
以下是客户端发送的请求示例:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CoverageRequest xmlns="http://www.iicmva.com/CoverageVerification/">
<RequestorInformation>
<Organization>
<Name>NVDMV</Name>
</Organization>
<ReasonDetails>
<ReasonCode>BI</ReasonCode>
<TrackingNumber>NVDMV-2011-05-12 10:36:52:286678</TrackingNumber>
</ReasonDetails>
</RequestorInformation>
<Detail>
<PolicyInformation>
<OrganizationDetails>
<NAIC>26654</NAIC>
</OrganizationDetails>
<PolicyDetails>
<VerificationDate>2011-05 12T00:00:00</VerificationDate>
<UniqueKey>1234567890123456789</UniqueKey>
<PolicyState>NV</PolicyState>
</PolicyDetails>
</PolicyInformation>
<InsuredInformation>
<PrimaryNameInformation>
<ParsedName>
<GivenName>FIRSTNAME</GivenName>
<Surname>LASTNAME</Surname>
</ParsedName>
<Name>LASTNAME,FIRSTNAME</Name>
<DriversLicense>NOLICENSE</DriversLicense>
<FEIN>FEIN</FEIN>
</PrimaryNameInformation>
<Address>
<StreetAddress>12345</StreetAddress>
</Address>
</InsuredInformation>
<VehicleInformation>
<VehicleDetails>
<VIN>VIN1234567</VIN>
<Make>MAKE</Make>
<Model>MODEL</Model>
<Year>2000</Year>
</VehicleDetails>
</VehicleInformation>
</Detail>
</CoverageRequest>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
以下是soap服务器获取的示例:
<?xml version="1.0" encoding="UTF-8"?><CoverageRequest><stdClass>
<Individual>
<ParsedName>
<Prefix />
<GivenName />
<MiddleName />
<Surname />
<Suffix /> …Run Code Online (Sandbox Code Playgroud) 我正在努力使用PHP解析下面的数据.API返回它,我尝试了各种语法.如何以非对象方式返回数据?或者,使用stdClass调用数据的语法是什么?
我可以将其转换为一个基于数据的数组,甚至两个?当谈到基于对象的数据集时,我迷失了方向.
stdClass Object
(
[0] => stdClass Object
(
[district] => stdClass Object
(
[state] => NY
[number] => 29
)
)
[1] => stdClass Object
(
[district] => stdClass Object
(
[state] => NY
[number] => 26
)
)
)
Run Code Online (Sandbox Code Playgroud)
当我自己创建对象,然后执行var_dump时,我得到这个:
object(stdClass)#8 (2) {
[0]=>
object(stdClass)#4 (1) {
["district"]=>
object(stdClass)#5 (2) {
["state"]=>
string(2) "NY"
["number"]=>
string(2) "29"
}
}
[1]=>
object(stdClass)#6 (1) {
["district"]=>
object(stdClass)#7 (2) {
["state"]=>
string(2) "NY"
["number"]=>
string(2) "26"
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试获得此结构显示的十二个ID:
stdClass Object
(
[checkins] => stdClass Object
(
[count] => 12
[items] => Array
(
[0] => stdClass Object
(
[venue] => stdClass Object
(
[id] => 4564654646456
.
.
Run Code Online (Sandbox Code Playgroud)
我做:
$checkins = $fsObjUnAuth->get("/users/self/checkins");
$count = $checkins ->response->checkins->count; // so I can get 12
for( $i = 0; $i < $count; $i ++)
{
$a1[] = $checkins['items'][$i]['venue']['id']; //two tries
$a2[] = $checkins ->response->checkins->items->$i->venue->id;
echo $i; echo ": ";
echo $a1;echo"<br>";
echo $a2;echo"<br>"
}
Run Code Online (Sandbox Code Playgroud)
但我得到:致命错误:不能使用stdClass类型的对象作为数组行.
请有人告诉我该怎么做?
非常感谢
不确定这句话的最佳方法是如何忍受我.
在Codeigniter中,我可以返回我的对象的记录集没有问题,但是它作为stdClass对象而不是作为"模型"对象(例如页面对象)返回,然后我可以使用该对象来使用该模型中的其他方法.
我在这里错过了一招吗?或者这是CI中的标准功能吗?
当我创建一个标准类时,我主要做的是:
$test = null;
$test->id = 1;
$test->name = 'name';
Run Code Online (Sandbox Code Playgroud)
但是在严格模式下我收到错误.
显然,正确的做法是:
$test = new stdClass();
$test->id = 1;
$test->name = 'name';
Run Code Online (Sandbox Code Playgroud)
所以我想知道:
这是一个很大的禁忌:$test = null;做我想做的事吗?
我们通过遵守严格的标准获得了什么?它是否确保代码将继续在将来的版本中运行?向后兼容会更好吗?这只是最佳做法的问题吗?别的什么?
编辑 拼写错误
如果print_r($object)退货
stdClass Object
(
[*] => sometext
)
Run Code Online (Sandbox Code Playgroud)
我如何获得星号的属性,即$object->*?
我目前正在使用Codeigniter框架.在下面的代码中,我想获得一个Animal_model对象,而不是一个stdClassObject.
<?php
class Animal_model extends CI_Model{
var $idanimal;
var $name;
public static $table = 'animals';
function __construct() {
parent::__construct();
}
function getone(self $animal){
$query = $this->db->get_where(self::$table, array('id_animal' => $animal->idanimal));
if($query == FALSE){
return FALSE;
}else{
return $query->row(); // How to get an Animal_model object here?
}
}
}
$lion = new Animal_model();
$lion->idanimal = 25;
var_dump($lion); // It says "object(Animal_model)".
$lion = $lion->getone($lion);
var_dump($lion); // Now it says "object(stdClass)".
?>
Run Code Online (Sandbox Code Playgroud)
如何转换$query->row()为Animal_model对象?
我需要转换这个数组
Array (
[0] => stdClass Object
( [title] => primo )
[1] => stdClass Object
( [title] => secondo ))
Run Code Online (Sandbox Code Playgroud)
至
Array (
[primo] => primo
[secondo] => secondo )
Run Code Online (Sandbox Code Playgroud)
尝试了不同的选项,包括类型转换,仍然没有找到正确的解决方案
我有一个这样的stdClass对象:
print_r($myobj);
stdClass Object(
[0] => testData
);
Run Code Online (Sandbox Code Playgroud)
因此很明显,我无法通过来获取值$myobj->0。
为了获得此值,我将对象转换为数组,但是有没有不转换的方法?