Я использую это: https://github.com/php-tmdb/api — PHP-оболочка для TMDb API. Это кажется действительно хорошим, и есть множество примеров для работы. Но я полностью застрял, начав с этого.
Мне нужно запустить поиск по API и разобрать результат. Просто верно? Но я не могу найти какие-либо методы или средства для работы с возвращенным объектом поиска.
Оболочка API предоставляет два способа использования API, предпочтительным способом является использование API модели.
Вот что я получил (основываясь на приведенных примерах):
$token = new \Tmdb\ApiToken(TMDB_API_KEY);
$client = new \Tmdb\Client($token);
$search = new \Tmdb\Repository\SearchRepository($client);
$query = new \Tmdb\Model\Search\SearchQuery\TvSearchQuery();
$query->page($page);print_r($search->searchTv('breaking bad', $query));
Это отлично работает, и я получаю результат. Однако результатом является объект, и все его свойства либо защищены, либо являются частными. Поэтому я понятия не имею, как получить доступ к результату и работать с ним. Вот пример результата:
Tmdb\Model\Collection\ResultCollection Object
(
[page:Tmdb\Model\Collection\ResultCollection:private] => 1
[totalPages:Tmdb\Model\Collection\ResultCollection:private] => 1
[totalResults:Tmdb\Model\Collection\ResultCollection:private] => 1
[data:protected] => Array
(
[0000000078e3674f0000000033ed0f6b] => Tmdb\Model\Tv Object
(
[backdropPath:Tmdb\Model\Tv:private] => /bzoZjhbpriBT2N5kwgK0weUfVOX.jpg
[createdBy:Tmdb\Model\Tv:private] =>
[contentRatings:Tmdb\Model\Tv:private] => Tmdb\Model\Common\GenericCollection Object
(
[data:protected] => Array
(
)
)
[episodeRunTime:Tmdb\Model\Tv:private] =>
[firstAirDate:Tmdb\Model\Tv:private] => DateTime Object
(
[date] => 2008-01-19 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[genres:Tmdb\Model\Tv:private] => Tmdb\Model\Collection\Genres Object
(
[data:protected] => Array
(
[0] => Tmdb\Model\Genre Object
(
[id:Tmdb\Model\Genre:private] => 18
[name:Tmdb\Model\Genre:private] =>
)
)
)
[homepage:Tmdb\Model\Tv:private] =>
[id:Tmdb\Model\Tv:private] => 1396
[inProduction:Tmdb\Model\Tv:private] =>
[languages:Tmdb\Model\Tv:private] =>
[lastAirDate:Tmdb\Model\Tv:private] =>
[name:Tmdb\Model\Tv:private] => Breaking Bad
Я ничего не вижу в документации и уже несколько часов не могу быстро добраться.
Что мне здесь не хватает?
Возможно, вы забыли, что имеете дело с коллекцией элементов, а не с одним результатом, возвращаемым из вашего запроса.
Тем не менее, следующий отредактированный пример должен привести вас к остальным 🙂
$token = new \Tmdb\ApiToken(TMDB_API_KEY);
$client = new \Tmdb\Client($token);
$token = new \Tmdb\ApiToken(TMDB_API_KEY);
$client = new \Tmdb\Client($token);
$search = new \Tmdb\Repository\SearchRepository($client);
$query = new \Tmdb\Model\Search\SearchQuery\TvSearchQuery();
$query->page(1);foreach($search->searchTv('breaking bad', $query) as $tvShow)
{
var_dump($tvShow->getId());
}
Других решений пока нет …