관리-도구
편집 파일: Topic.php
<?php declare(strict_types=1); namespace Kreait\Firebase\Messaging; use JsonSerializable; use Kreait\Firebase\Exception\Messaging\InvalidArgument; use Stringable; use function preg_match; use function preg_replace; use function sprintf; use function trim; final class Topic implements JsonSerializable, Stringable { /** * @param non-empty-string $value */ private function __construct(private readonly string $value) { } /** * @return non-empty-string */ public function __toString(): string { return $this->value; } /** * @param non-empty-string $value */ public static function fromValue(string $value): self { $value = trim((string) preg_replace('@^/topic/@', '', $value), '/'); if ($value === '') { throw new InvalidArgument('The topic name cannot be empty'); } $check = preg_match('/[^a-zA-Z0-9-_.~]$/', $value); if ($check !== false && $check > 0) { throw new InvalidArgument(sprintf('Malformed topic name "%s".', $value)); } return new self($value); } /** * @return non-empty-string */ public function value(): string { return $this->value; } public function jsonSerialize(): string { return $this->value; } }