2016-09-12 2 views
1

Я получаю эту ошибку при попытке просмотреть сообщения об ошибках из API. В документации говорится, что он возвращает массив объектов BatchError в поле PartialError. Когда я пытаюсь получить доступ к свойству Index BatchError, это дает мне ошибку. Что не так?PHP: попытка получить свойство не объекта, из объекта BatchError API объявлений Bing

https://msdn.microsoft.com/en-us/library/bing-ads-campaign-management-addadgroups.aspx#Anchor_1

PHP Notice – yii\base\ErrorException 

Trying to get property of non-object 

1. in /cygdrive/c/Users/Chloe/workspace/bestsales/models/BingAds.php at line 384 

     $response = $campaignProxy->GetService()->AddAdGroups($request); 
    } catch (\SoapFault $e) { 
     $this->handleException($e); 
     return null; 
    } 
    $adGroupsIds = $response->AdGroupIds; 
    $partialErrors = $response->PartialErrors; 
    foreach ($partialErrors as $batchError) { 
     Yii::error($batchError); 
     $adGroup = $adGroups[$batchError->Index]; # <<<< 

Журналы:

2016-09-11 22:15:59 [::1][1][v5adqit0fiae7bon3i1lks49m3][error][application] [ 
    unserialize('O:8:"stdClass":8:{s:4:"Code";i:1016;s:7:"Details";N;s:9:"ErrorCode";s:33:"CampaignServiceInvalidEntityState";s:9:"FieldPath";N;s:23:"ForwardCompatibilityMap";N;s:5:"Index";i:0;s:7:"Message";s:104:"Passed entity state is invalid. Please refer to documentation for list of valid values for given entity.";s:4:"Type";s:10:"BatchError";}'), 
] 
    in /cygdrive/c/Users/Chloe/workspace/bestsales/models/BingAds.php:383 
    in /cygdrive/c/Users/Chloe/workspace/bestsales/models/AdGroup.php:195 
    in /cygdrive/c/Users/Chloe/workspace/bestsales/models/Keyword.php:145 
2016-09-11 22:15:59 [::1][1][v5adqit0fiae7bon3i1lks49m3][error][yii\base\ErrorException:8] exception 'yii\base\ErrorException' with message 'Trying to get property of non-object' in /cygdrive/c/Users/Chloe/workspace/bestsales/models/BingAds.php:384 

Я также попытался

Yii::error($batchError); 
    Yii::error($batchError['Index']); 
    Yii::error($batchError::$Index); 
    Yii::error($batchError->$Index); 
    Yii::error($batchError->Index); 

я использовал VarDumper и получил это:

[ 
    0 => stdClass#1 
    (
     [Code] => 1016 
     [Details] => null 
     [ErrorCode] => 'CampaignServiceInvalidEntityState' 
     [FieldPath] => null 
     [ForwardCompatibilityMap] => null 
     [Index] => 0 
     [Message] => 'Passed entity state is invalid. Please refer to documentation for list of valid values for given entity.' 
     [Type] => 'BatchError' 
    ) 
] 
+0

Что такое '$ adGroups'? Насколько я могу судить, нет проблем с доступом к '$ batchError-> Index' – Phil

ответ

0

я был в состоянии исправить это с

$partialErrors = $response->PartialErrors; 
if (!empty($partialErrors->BatchError)) $partialErrors = $partialErrors->BatchError; 
foreach ($partialErrors as $batchError) { 

Видимо foreach способен цикла по свойствам объекта тоже, что я знал, знаю, что это может сделать, и, видимо, PartialErrors объект с одним свойством с именем BatchError, который затем содержит массив (но BatchError также может отсутствовать). Это не соответствует документации или, по крайней мере, не документации наименее неожиданным.

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

  • Нет связанных вопросов^_^