MessageContent.php
- Pfad:
src/Domain/ValueObject/MessageContent.php - Namespace: Domain\ValueObject
- Zeilen: 97 | Größe: 2,095 Bytes
- Geändert: 2025-12-25 09:52:20 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 1
- use InvalidArgumentException
Klassen 1
-
MessageContentclass Zeile 11
Funktionen 10
-
__construct()private Zeile 17 -
fromString()public Zeile 27 -
fromStringOrEmpty()public Zeile 47 -
value()public Zeile 52 -
__toString()public Zeile 57 -
isEmpty()public Zeile 62 -
length()public Zeile 67 -
preview()public Zeile 75 -
equals()public Zeile 84 -
contains()public Zeile 92
Verwendet von 3
- ChatMessage.php use
- ChatMessage.php constructor
- ChatMessageFactory.php use
Code
<?php
declare(strict_types=1);
namespace Domain\ValueObject;
// @responsibility: Immutables Value Object für Chat-Nachrichten-Inhalt
use InvalidArgumentException;
final class MessageContent
{
private const MAX_LENGTH = 100000;
private string $value;
private function __construct(string $value)
{
$this->value = $value;
}
/**
* Create from string.
*
* @throws InvalidArgumentException
*/
public static function fromString(string $content): self
{
$content = trim($content);
if ($content === '') {
throw new InvalidArgumentException('Message content cannot be empty');
}
if (mb_strlen($content) > self::MAX_LENGTH) {
throw new InvalidArgumentException(
sprintf('Message content exceeds maximum length of %d characters', self::MAX_LENGTH)
);
}
return new self($content);
}
/**
* Create for system/assistant messages that may be empty initially.
*/
public static function fromStringOrEmpty(string $content): self
{
return new self(trim($content));
}
public function value(): string
{
return $this->value;
}
public function __toString(): string
{
return $this->value;
}
public function isEmpty(): bool
{
return $this->value === '';
}
public function length(): int
{
return mb_strlen($this->value);
}
/**
* Get preview of content (first N characters).
*/
public function preview(int $maxLength = 50): string
{
if ($this->length() <= $maxLength) {
return $this->value;
}
return mb_substr($this->value, 0, $maxLength) . '...';
}
public function equals(self $other): bool
{
return $this->value === $other->value;
}
/**
* Check if content contains a search term (case-insensitive).
*/
public function contains(string $needle): bool
{
return mb_stripos($this->value, $needle) !== false;
}
}