[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересное PHP. Просто погудеть.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Эли4ка
Структура кода идеальна :rolleyes:
Но вот
$media->is_video

уже не совсем точно.
Надо так:
//функция определяющая тип материала.
function typename($obj){
return $obj->graphql->shortcode_media->__typename;
}
/*функция определяющая тип материала из ноды*/
function typename_from_node($obj,$x){
return $obj->graphql->shortcode_media->edge_sidecar_to_children->edges[$x]->node->__typename;
}
Эли4ка
 protected function setVideo($media)
{
$this->paths[] = $media->display_url;
}

Тоже не точно для одиночного получения ссылки на видео надо:
$obj->graphql->shortcode_media->video_url

Для фото
$obj->graphql->shortcode_media->display_url

Видите разницу? Если бы получения для видео и для фото было одинаковым, тогда у меня не получился такой велосипед.

Не подумайте, что я вас критикую, просто я показываю в ваш правильный код, какие нужные точные св-ва, чтобы получать то, что задумали.
Эли4ка
class Media
{
protected $json;
protected $paths = [];
protected $type = [];
protected $iterator;

public function __construct($url)
{
set_error_handler(function () use ($url) {
throw new RuntimeException($url);
});

$json = file_get_contents($url);
restore_error_handler();

$this->json = json_decode($json);
$error = json_last_error();

if ($error !== JSON_ERROR_NONE) {
throw new DomainException($error);
}

$this->createPaths();
}

public function getPaths()
{
return $this->paths;
}

protected function createPaths()
{
$media = $this->json->graphql->shortcode_media;

if ($this->typename($this->json) == "GraphVideo") {
$this->setVideo($media);
} else {
$this->setPhoto($media);
}
}


protected function setVideo($media)
{
$this->paths[] = $media->video_url;
}
protected function setPhoto($media)
{
$this->paths[] = $media->display_url;
}
protected function typename($media)
{
$this->type[] = $media->__typename;
}
protected function typename_from_node($media, $iterator)
{
$this->type[] = $media->edge_sidecar_to_children->edges[$iterator]->node->__typename;
}
}


С учетом исправлений функций будут выглядеть вот так.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.