wp/wp-includes/class-wp-block-bindings-source.php
changeset 21 48c4eec2b7e6
child 22 8c2e4d02f4ef
equal deleted inserted replaced
20:7b1b88e27a20 21:48c4eec2b7e6
       
     1 <?php
       
     2 /**
       
     3  * Block Bindings API: WP_Block_Bindings_Source class.
       
     4  *
       
     5  *
       
     6  * @package WordPress
       
     7  * @subpackage Block Bindings
       
     8  * @since 6.5.0
       
     9  */
       
    10 
       
    11 /**
       
    12  * Class representing block bindings source.
       
    13  *
       
    14  * This class is designed for internal use by the Block Bindings registry.
       
    15  *
       
    16  * @since 6.5.0
       
    17  * @access private
       
    18  *
       
    19  * @see WP_Block_Bindings_Registry
       
    20  */
       
    21 final class WP_Block_Bindings_Source {
       
    22 
       
    23 	/**
       
    24 	 * The name of the source.
       
    25 	 *
       
    26 	 * @since 6.5.0
       
    27 	 * @var string
       
    28 	 */
       
    29 	public $name;
       
    30 
       
    31 	/**
       
    32 	 * The label of the source.
       
    33 	 *
       
    34 	 * @since 6.5.0
       
    35 	 * @var string
       
    36 	 */
       
    37 	public $label;
       
    38 
       
    39 	/**
       
    40 	 * The function used to get the value from the source.
       
    41 	 *
       
    42 	 * @since 6.5.0
       
    43 	 * @var callable
       
    44 	 */
       
    45 	private $get_value_callback;
       
    46 
       
    47 	/**
       
    48 	 * The context added to the blocks needed by the source.
       
    49 	 *
       
    50 	 * @since 6.5.0
       
    51 	 * @var string[]|null
       
    52 	 */
       
    53 	public $uses_context = null;
       
    54 
       
    55 	/**
       
    56 	 * Constructor.
       
    57 	 *
       
    58 	 * Do not use this constructor directly. Instead, use the
       
    59 	 * `WP_Block_Bindings_Registry::register` method or the `register_block_bindings_source` function.
       
    60 	 *
       
    61 	 * @since 6.5.0
       
    62 	 *
       
    63 	 * @param string $name               The name of the source.
       
    64 	 * @param array  $source_properties  The properties of the source.
       
    65 	 */
       
    66 	public function __construct( string $name, array $source_properties ) {
       
    67 		$this->name = $name;
       
    68 		foreach ( $source_properties as $property_name => $property_value ) {
       
    69 			$this->$property_name = $property_value;
       
    70 		}
       
    71 	}
       
    72 
       
    73 	/**
       
    74 	 * Retrieves the value from the source.
       
    75 	 *
       
    76 	 * @since 6.5.0
       
    77 	 *
       
    78 	 * @param array    $source_args     Array containing source arguments used to look up the override value, i.e. {"key": "foo"}.
       
    79 	 * @param WP_Block $block_instance  The block instance.
       
    80 	 * @param string   $attribute_name  The name of the target attribute.
       
    81 	 *
       
    82 	 * @return mixed The value of the source.
       
    83 	 */
       
    84 	public function get_value( array $source_args, $block_instance, string $attribute_name ) {
       
    85 		return call_user_func_array( $this->get_value_callback, array( $source_args, $block_instance, $attribute_name ) );
       
    86 	}
       
    87 
       
    88 	/**
       
    89 	 * Wakeup magic method.
       
    90 	 *
       
    91 	 * @since 6.5.0
       
    92 	 */
       
    93 	public function __wakeup() {
       
    94 		throw new \LogicException( __CLASS__ . ' should never be unserialized' );
       
    95 	}
       
    96 }