30 lines
1,021 B
PHP
30 lines
1,021 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace Domain\Models\ValueObjects;
|
||
|
|
|
||
|
|
use Webmozart\Assert\Assert;
|
||
|
|
|
||
|
|
final readonly class PictureMetadata
|
||
|
|
{
|
||
|
|
public function __construct(
|
||
|
|
public ?string $alt = null,
|
||
|
|
public ?string $title = null,
|
||
|
|
) {
|
||
|
|
if ($this->alt !== null) {
|
||
|
|
$trimmedAlt = trim($this->alt);
|
||
|
|
Assert::stringNotEmpty($trimmedAlt, 'Picture alt cannot be empty when provided.');
|
||
|
|
Assert::minLength($trimmedAlt, 4, 'Picture alt must be at least 4 characters.');
|
||
|
|
Assert::maxLength($trimmedAlt, 75, 'Picture alt cannot exceed 75 characters.');
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($this->title !== null) {
|
||
|
|
$trimmedTitle = trim($this->title);
|
||
|
|
Assert::stringNotEmpty($trimmedTitle, 'Picture title cannot be empty when provided.');
|
||
|
|
Assert::minLength($trimmedTitle, 4, 'Picture title must be at least 4 characters.');
|
||
|
|
Assert::maxLength($trimmedTitle, 75, 'Picture title cannot exceed 75 characters.');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|