koel/app/Values/ArtistInformation.php

39 lines
921 B
PHP
Raw Normal View History

<?php
namespace App\Values;
use Illuminate\Contracts\Support\Arrayable;
final class ArtistInformation implements Arrayable
{
use FormatsLastFmText;
2022-07-16 22:42:29 +00:00
public function __construct(
public ?string $url = null,
public ?string $image = null,
public array $bio = ['summary' => '', 'full' => '']
) {
}
public static function fromLastFmData(object $data): self
{
return new self(
url: $data->url,
bio: [
'summary' => isset($data->bio) ? self::formatLastFmText($data->bio->summary) : '',
'full' => isset($data->bio) ? self::formatLastFmText($data->bio->content) : '',
],
);
}
/** @return array<mixed> */
public function toArray(): array
{
return [
'url' => $this->url,
'image' => $this->image,
'bio' => $this->bio,
];
}
}