2023-04-06 00:38:26 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Shikiryu\SRSS\Entity;
|
|
|
|
|
2023-04-12 15:28:38 +02:00
|
|
|
use ReflectionException;
|
2023-04-12 00:28:14 +02:00
|
|
|
use Shikiryu\SRSS\Entity\Item\Category;
|
|
|
|
use Shikiryu\SRSS\Entity\Item\Enclosure;
|
|
|
|
use Shikiryu\SRSS\Entity\Item\Source;
|
2023-04-11 23:49:03 +02:00
|
|
|
use Shikiryu\SRSS\Entity\Media\Content;
|
2023-04-07 17:57:35 +02:00
|
|
|
use Shikiryu\SRSS\Validator\HasValidator;
|
|
|
|
use Shikiryu\SRSS\Validator\Validator;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* https://cyber.harvard.edu/rss/rss.html#hrelementsOfLtitemgt
|
|
|
|
*/
|
|
|
|
class Item extends HasValidator implements SRSSElement
|
2023-04-06 00:38:26 +02:00
|
|
|
{
|
2023-04-07 17:57:35 +02:00
|
|
|
/**
|
|
|
|
* @requiredOr description
|
|
|
|
* @nohtml
|
|
|
|
*/
|
|
|
|
public ?string $title = null;
|
|
|
|
/**
|
|
|
|
* @url
|
|
|
|
*/
|
|
|
|
public ?string $link = null;
|
|
|
|
/**
|
|
|
|
* @requiredOr title
|
|
|
|
*/
|
|
|
|
public ?string $description = null;
|
|
|
|
/**
|
|
|
|
* @email
|
|
|
|
*/
|
|
|
|
public ?string $author = null;
|
2023-04-12 00:28:14 +02:00
|
|
|
/**
|
|
|
|
* @var Category[]
|
2023-04-07 17:57:35 +02:00
|
|
|
*/
|
2023-04-12 00:28:14 +02:00
|
|
|
public ?array $category = null;
|
2023-04-07 17:57:35 +02:00
|
|
|
/**
|
|
|
|
* @url
|
|
|
|
*/
|
|
|
|
public ?string $comments = null;
|
2023-04-12 00:28:14 +02:00
|
|
|
/**
|
|
|
|
* @var Enclosure|null
|
2023-04-07 17:57:35 +02:00
|
|
|
*/
|
2023-04-12 00:28:14 +02:00
|
|
|
public ?Enclosure $enclosure = null;
|
2023-04-07 17:57:35 +02:00
|
|
|
public ?string $guid = null;
|
|
|
|
/**
|
|
|
|
* @date
|
|
|
|
*/
|
|
|
|
public ?string $pubDate = null;
|
2023-04-12 00:28:14 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @var Source|null
|
2023-04-07 17:57:35 +02:00
|
|
|
*/
|
2023-04-12 00:28:14 +02:00
|
|
|
public ?Source $source = null;
|
2023-04-06 00:38:26 +02:00
|
|
|
|
2023-04-06 11:07:06 +02:00
|
|
|
/**
|
2023-04-11 23:49:03 +02:00
|
|
|
* @var Content[]
|
2023-04-07 17:57:35 +02:00
|
|
|
* @contentMedia
|
2023-04-06 11:07:06 +02:00
|
|
|
*/
|
|
|
|
public array $medias = [];
|
|
|
|
|
|
|
|
public function isValid(): bool
|
|
|
|
{
|
2023-04-11 23:49:03 +02:00
|
|
|
try {
|
|
|
|
return (new Validator())->isObjectValid($this);
|
2023-04-12 15:28:38 +02:00
|
|
|
} catch (ReflectionException) {
|
2023-04-11 23:49:03 +02:00
|
|
|
return false;
|
|
|
|
}
|
2023-04-06 11:07:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function toArray(): array
|
|
|
|
{
|
2023-04-07 17:57:35 +02:00
|
|
|
$vars = get_object_vars($this);
|
|
|
|
unset($vars['validated']);
|
|
|
|
return $vars;
|
2023-04-06 11:07:06 +02:00
|
|
|
}
|
2023-04-06 00:38:26 +02:00
|
|
|
}
|