PluginProbe
Blocks – Reusable Content, Shortcodes & Site Variables / trunk
Blocks – Reusable Content, Shortcodes & Site Variables vtrunk
26.09.03.15 26.08.31.21 26.08.22.20 26.08.22.22 26.08.22.17 26.08.22.13 26.08.21.19 26.08.07.23 26.07.19.14 26.07.13.21 26.07.13.17 26.07.12.13 026.07.07.21 026.07.05.18 026.06.26.20 026.06.26.21 026.06.08.20 026.05.13.14 026.04.29.10 trunk 026.02.22.22 026.03.16.23 026.04.23.13
blocks / src / Settings / SettingDefinition.php

SettingDefinition.php in Blocks – Reusable Content, Shortcodes & Site Variables trunk, at src/Settings/SettingDefinition.php

33 lines 1.1 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 RenzoJohnson\Blocks\Settings;
6
7 \defined( 'ABSPATH' ) || exit;
8
9 final class SettingDefinition {
10 /** @throws \InvalidArgumentException When security or naming invariants are violated. */
11 public function __construct(
12 public readonly string $option_name,
13 public readonly string $wp_type,
14 public readonly bool|int|string $default_value,
15 public readonly SanitizerType $sanitizer,
16 public readonly bool $sensitive = false,
17 public readonly bool $exportable = true,
18 public readonly ?string $public_token = null,
19 ) {
20 if ( ! \str_starts_with( $option_name, 'blocks_' ) ) {
21 throw new \InvalidArgumentException( 'Blocks setting names must use the blocks_ prefix.' );
22 }
23
24 if ( $sensitive && ( $exportable || null !== $public_token ) ) {
25 throw new \InvalidArgumentException( 'Sensitive settings cannot be exported or public tokens.' );
26 }
27
28 if ( PublicTokenRegistry::for_option( $option_name ) !== $public_token ) {
29 throw new \InvalidArgumentException( 'Setting token metadata does not match the public token registry.' );
30 }
31 }
32 }
33