%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Messaging/ |
| Current File : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Messaging/Notification.php |
<?php
declare(strict_types=1);
namespace Kreait\Firebase\Messaging;
use Kreait\Firebase\Exception\InvalidArgumentException;
final class Notification implements \JsonSerializable
{
/** @var string|null */
private $title;
/** @var string|null */
private $body;
/** @var string|null */
private $imageUrl;
/**
* @throws InvalidArgumentException if both title and body are null
*/
private function __construct(?string $title = null, ?string $body = null, ?string $imageUrl = null)
{
$this->title = $title;
$this->body = $body;
$this->imageUrl = $imageUrl;
if ($this->title === null && $this->body === null) {
throw new InvalidArgumentException('The title and body of a notification cannot both be NULL');
}
}
/**
* @throws InvalidArgumentException if both title and body are null
*/
public static function create(?string $title = null, ?string $body = null, ?string $imageUrl = null): self
{
return new self($title, $body, $imageUrl);
}
/**
* @param array<string, string> $data
*
* @throws InvalidArgumentException if both title and body are null
*/
public static function fromArray(array $data): self
{
return new self(
$data['title'] ?? null,
$data['body'] ?? null,
$data['image'] ?? null
);
}
public function withTitle(string $title): self
{
$notification = clone $this;
$notification->title = $title;
return $notification;
}
public function withBody(string $body): self
{
$notification = clone $this;
$notification->body = $body;
return $notification;
}
public function withImageUrl(string $imageUrl): self
{
$notification = clone $this;
$notification->imageUrl = $imageUrl;
return $notification;
}
public function title(): ?string
{
return $this->title;
}
public function body(): ?string
{
return $this->body;
}
public function imageUrl(): ?string
{
return $this->imageUrl;
}
/**
* @return array<string, string>
*/
public function jsonSerialize(): array
{
return \array_filter([
'title' => $this->title,
'body' => $this->body,
'image' => $this->imageUrl,
], static function ($value) {
return $value !== null;
});
}
}