createRequest возвращает массив вместо класса - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь получить информацию о пользователях, используя Microsoft Graph Library для PHP .

Но этот код приводит к ошибке Trying to get property 'getGivenName' of non-object.

$user = $graph->createRequest("GET", "/users")
              ->setReturnType(Model\User::class)
              ->execute();

Это связано с тем, что $user это массив вместо объекта !?Что не так с SDK (или моим кодом)?

Есть ли лучшая документация для SDK ???

1 Ответ

0 голосов
/ 26 марта 2019

Это связано с тем, что $ user - это массив, а не объект!?

Правильно, поскольку конечная точка GET Users возвращает список пользователей , в предоставленном примере:

 $users = $graph->createRequest("GET", "/users")
        ->setReturnType(\Microsoft\Graph\Model\User::class)
        ->execute();

$users содержит массив объектов Microsoft\Graph\Model\User типа и

 $givenName = $users[0]->getGivenName();  

дает GivenName свойство первого элемента в массиве .

Можно запросить определенного пользователя через GET /users/{id | userPrincipalName} конечную точку :

   $user = $graph->createRequest("GET", "/users/{$userId}")
        ->setReturnType(\Microsoft\Graph\Model\User::class)
        ->execute();

В этом случае $user объект имеет тип Microsoft\Graph\Model\User типа :

   $givenName = $user->getGivenName();

Обновление

setReturnType функция принимает имя типа сущности API Microsoft Graph, в вашем примере это Model\User указывает на тип, который нене принадлежит пространству имен Microsoft\Graph\Model, и в результате ответ JSON не десериализовывается в экземпляр класса.

Вместо

setReturnType(Model\User::class)

попробуйте указать полное имя класса:

setReturnType(\Microsoft\Graph\Model\User::class)
...