PluginProbe
ZIP AI – AI Website Builder & AI Agent (Beta) / 0.0.8
ZIP AI – AI Website Builder & AI Agent (Beta) v0.0.8
0.0.10 0.0.9 trunk 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8
zip-ai / lib / php-mcp-schema / src / Common / Protocol / DTO / Icons.php

Icons.php in ZIP AI – AI Website Builder & AI Agent (Beta) 0.0.8, at lib/php-mcp-schema/src/Common/Protocol/DTO/Icons.php

100 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WP\McpSchema\Common\Protocol\DTO;
6
7 use WP\McpSchema\Common\AbstractDataTransferObject;
8 use WP\McpSchema\Common\Core\DTO\Icon;
9 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
10
11 /**
12 * Base interface to add `icons` property.
13 *
14 * @since 2025-11-25
15 *
16 * @mcp-domain Common
17 * @mcp-subdomain Protocol
18 * @mcp-version 2025-11-25
19 */
20 class Icons extends AbstractDataTransferObject
21 {
22 use ValidatesRequiredFields;
23
24 /**
25 * Optional set of sized icons that the client can display in a user interface.
26 *
27 * Clients that support rendering icons MUST support at least the following MIME types:
28 * - `image/png` - PNG images (safe, universal compatibility)
29 * - `image/jpeg` (and `image/jpg`) - JPEG images (safe, universal compatibility)
30 *
31 * Clients that support rendering icons SHOULD also support:
32 * - `image/svg+xml` - SVG images (scalable but requires security precautions)
33 * - `image/webp` - WebP images (modern, efficient format)
34 *
35 * @since 2025-11-25
36 *
37 * @var array<\WP\McpSchema\Common\Core\DTO\Icon>|null
38 */
39 protected ?array $icons;
40
41 /**
42 * @param array<\WP\McpSchema\Common\Core\DTO\Icon>|null $icons @since 2025-11-25
43 */
44 public function __construct(
45 ?array $icons = null
46 ) {
47 $this->icons = $icons;
48 }
49
50 /**
51 * Creates an instance from an array.
52 *
53 * @param array{
54 * icons?: array<array<string, mixed>|\WP\McpSchema\Common\Core\DTO\Icon>|null
55 * } $data
56 * @phpstan-param array<string, mixed> $data
57 * @return self
58 */
59 public static function fromArray(array $data): self
60 {
61 /** @var array<\WP\McpSchema\Common\Core\DTO\Icon>|null $icons */
62 $icons = isset($data['icons'])
63 ? array_map(
64 static fn($item) => is_array($item)
65 ? Icon::fromArray($item)
66 : $item,
67 self::asArray($data['icons'])
68 )
69 : null;
70
71 return new self(
72 $icons
73 );
74 }
75
76 /**
77 * Converts the instance to an array.
78 *
79 * @return array<string, mixed>
80 */
81 public function toArray(): array
82 {
83 $result = [];
84
85 if ($this->icons !== null) {
86 $result['icons'] = array_map(static fn($item) => $item->toArray(), $this->icons);
87 }
88
89 return $result;
90 }
91
92 /**
93 * @return array<\WP\McpSchema\Common\Core\DTO\Icon>|null
94 */
95 public function getIcons(): ?array
96 {
97 return $this->icons;
98 }
99 }
100