‪TYPO3CMS  ‪main
SecretIdentifier.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
21 
27 class SecretIdentifier implements \JsonSerializable
28 {
29  public static function fromJson(string $json): self
30  {
31  return self::fromArray(
32  (array)json_decode($json, true, 8, JSON_THROW_ON_ERROR)
33  );
34  }
35 
36  public static function fromArray(array $payload): self
37  {
38  $type = $payload['type'] ?? null;
39  $name = $payload['name'] ?? null;
40  if (!is_string($type) || !is_string($name)) {
41  throw new \LogicException('Properties "type" and "name" must be of type string', 1664215980);
42  }
43  return GeneralUtility::makeInstance(self::class, $type, $name);
44  }
45 
46  public function __construct(public readonly string $type, public readonly string $name) {}
47 
51  public function jsonSerialize(): array
52  {
53  return [
54  'type' => $this->type,
55  'name' => $this->name,
56  ];
57  }
58 }
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Security
Definition: BlockSerializationTrait.php:18