| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- declare(strict_types=1);
- namespace App\Broadcasting;
- use InvalidArgumentException;
- final readonly class RealtimeRoom
- {
- private function __construct(
- public string $name
- ) {}
- public static function user(int $userId): self
- {
- return self::make("user.{$userId}");
- }
- public static function schedule(int $scheduleId): self
- {
- return self::make("schedule.{$scheduleId}");
- }
- public static function package(int $servicePackageId): self
- {
- return self::make("package.{$servicePackageId}");
- }
- public static function provider(int $providerId): self
- {
- return self::make("provider.{$providerId}");
- }
- private static function make(string $name): self
- {
- if (str_contains($name, ':') || str_contains($name, '@')) {
- throw new InvalidArgumentException(
- "Nome de sala invalido: \"{$name}\". Nao pode conter \":\" nem \"@\"."
- );
- }
- return new self($name);
- }
- public function __toString(): string
- {
- return $this->name;
- }
- }
|