2013-12-16 5 views
0

у меня возникли проблемы с PHP на данный момент, я получаю эту ошибку,Объект класса StdClass не может быть преобразован в строку в

Объект класса StdClass не может быть преобразован в строку ошибка возникает, когда я запустить эту часть кода на моем сайте,

<?php 
//Setup 
$wsdl='https://api.netbiter.net/operation/v1/soap?wsdl'; 
$client=new SoapClient ($wsdl); 
$accessKey='042B79FC23AB0925D4D20FBB8EE42B98'; //Replace by your access key 
$systemId='003011FB506F'; //Replace by your system id 
$parameterId='17379.0.44535'; //Replace by your data logging id 
$limitRows='24'; //How many hour data logging 
$sortOrder='desc'; //Order of the response list 
$startDate='2013-12-04T03:00:00Z'; //The UTC start date and time limit for the list 
$endDate='2013-12-05T03:00:00Z'; //The UTC end date and time limit for the list 
?> 

<?php 
function handleArgosException(Exception $fault) 
{ 
    echo "Error: "; 
    echo "Message: {$fault->faultstring} "; 
    if (isset($fault->detail->ForbiddenException)) 
    { 
     echo "Forbidden exception: Code {$fault->detail->ForbiddenException->code}"; 
    } 
    else if (isset($fault->detail->LimitException)) 
    { 
     echo "Limit exception: Code {$fault->detail->LimitException->code}"; 
    } 
    else if (isset($fault->detail->GeneralException)) 
    { 
     echo "General exception: Code {$fault->detail->GeneralException->code}"; 
    } 
} 
?> 

<?php 
echo "<h1>Test Data Logging</h1>"; 
$param=array ('accessKey'=>$accessKey, 'systemId'=>$systemId, 'parameterId'=>$parameterId, 
       'limitRows'=>$limitRows, 'sortOrder'=>$sortOrder, 'startDate'=>$startDate, 
       'endDate'=>$endDate); 

try 
{ 
    $resSystems = $client->getSystemHourAggregatedLoggedValues($param); 
} 
catch (SoapFault $fault) 
{ 
    handleArgosException($fault); 
} 

echo "<h2>Example code</h2>"; 
foreach($resSystems->HourAggregatedLogParameters as $label => $value) 
{ 
    echo "System $label : $value<br />"; 
} 
?> 

линия, в которой встречающихс ошибка это один,

echo "System $label : $value<br />"; 

Я не очень теперь, что эта проблема, так что любая помощь будет быть gre в.

+0

Откуда берутся эти функции? Как и getSystemHourAggregatedLoggedValues, я не вижу это как член класса в PHP doc – user602525

+0

. Функция исходит из webservices (.wsdl). Ссылка wsdl наверху. Это веб-службы SOAP API. – Dainese

+0

https://api.netbiter.net/operation/v1/soap?wsdl – Dainese

ответ

0

Ошибка вполне объяснительная. Его высказывание, что у вас есть stdObject, и php не знает, как его распечатать.

Поскольку вы не дали никаких следов ошибок, если вы уверены, что ошибка генерирует из этой линии echo "System $label : $value<br />";, то что это означает, что значение $label$value или не нормальный тип данных. Его объект класса un-named, который, вероятно, генерируется «на лету».

С классом этот объект содержит поля, которые вы можете распечатать. Или вы можете определить метод toString() для этого класса, чтобы PHP мог использовать этот метод для печати вашего объекта.

Но, скорее всего, вас интересует fields этого объекта. Таким образом, вы можете либо сделать var_dump($label) или print_r($label) чтобы увидеть, какие поля содержатся в этом объекте. Затем вы можете легко извлечь эти поля следующим образом: echo $label->field1;

Смежные вопросы