Как работает документация по методу клиента службы Google (PHP)? - PullRequest
2 голосов
/ 15 февраля 2020

У меня постоянно возникают трудности с использованием любого метода обслуживания клиентов, который где-то явно не указан. Несмотря на то, что я следую документации и даже читаю исходный код, имена классов или методов, которые я придумываю, следуя схеме, никогда не бывают правильными.

В документации на Packagist (см. «Выполнение запросов») говорится классы клиентской библиотеки автоматически генерируются из конечных точек Google, что согласуется с описанием в документации библиотеки на Github , в котором говорится, что шаблон для доступа к методам должен быть "$service->resource->method(args)".

почему следующее?

// works:
// I get a countable object of active classrooms owner by the specified id
$response = $this->ClassroomService->courses->listCourses([
            'courseStates' =>   'ACTIVE',
            'teacherId'     => 'me']);

// works:
// I get an instance of the single classroom's object containing lots of meta data
$response = $this->ClassroomService->courses->get( $id );

// does not work:
// 500 error, obj has no such method
$response = $this->ClassroomService->topics->listCoursesTopics( $id  );

В соответствии с API Explorer все три должны быть в порядке.

Что мне не хватает в использовании объектов службы клиента?

Редактировать В конечном итоге я определил ресурс в моем примере как "courses_topics", метод был правильным для документов. Спасибо за идею @ebram. Однако остается вопрос, как называются методы. courseWork это мой следующий вызов, и он не соответствует шаблону именования topics.

1 Ответ

1 голос
/ 15 февраля 2020
  • Нет члена topics ClassroomService.
  • Участник имеет имя courses_topics.

Ваш код должен выглядеть как это:

$response = $this->ClassroomService->courses_topics->listCoursesTopics( $id  );
  • Документация для Google_Service_Classroom_CoursesTopics_Resource неправильно дает пример кода, где член назван ->topics.
  • Учитывая, что документация API генерируется из источника, но пример кода (как правило) написан от руки, я предполагаю, что документация по API верна, а пример кода неверен. Я бы отправил документацию с ошибкой в ​​Google.

Обновление:

Я посмотрел PHP исходный код Google_Service_Classroom в GitHub и проверил, что свойство названо courses_topics вместо topics, поэтому в заключение: пример кода неправильный .

Также интересен тип ресурса в фактическом источнике. код Google_Service_Classroom_Resource_CoursesTopics, но в документации он называется Google_Service_Classroom_CoursesTopics_Resource - так что документация определенно неверна.

...