Changeset 58869
- Timestamp:
- 08/08/2024 11:28:30 AM (4 months ago)
- Location:
- branches/6.6
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/6.6
-
branches/6.6/src/wp-includes/interactivity-api/class-wp-interactivity-api.php
r58327 r58869 522 522 * @since 6.6.0 The function now adds a warning when the namespace is null, falsy, or the directive value is empty. 523 523 * @since 6.6.0 Removed `default_namespace` and `context` arguments. 524 * @since 6.6.0 Add support for derived state. 524 525 * 525 526 * @param string|true $directive_value The directive attribute value string or `true` when it's a boolean attribute. … … 558 559 return null; 559 560 } 560 } 561 562 if ( $current instanceof Closure ) {563 /*564 * This state getter's namespace is added to the stack so that565 * `state()` or `get_config()` read that namespace when called566 * without specifying one.567 */568 array_push( $this->namespace_stack, $ns );569 try {570 $current = $current();571 } catch ( Throwable $e ) {572 _doing_it_wrong(573 __METHOD__,574 sprintf(575 /* translators: 1: Path pointing to an Interactivity API state property, 2: Namespace for an Interactivity API store. */576 __( 'Uncaught error executing a derived state callback with path "%1$s" and namespace "%2$s".' ),577 $path,578 $ns579 ),580 '6.6.0'581 );582 return null;583 } finally {584 // Remove the property's namespace from the stack.585 array_pop( $this->namespace_stack );561 562 if ( $current instanceof Closure ) { 563 /* 564 * This state getter's namespace is added to the stack so that 565 * `state()` or `get_config()` read that namespace when called 566 * without specifying one. 567 */ 568 array_push( $this->namespace_stack, $ns ); 569 try { 570 $current = $current(); 571 } catch ( Throwable $e ) { 572 _doing_it_wrong( 573 __METHOD__, 574 sprintf( 575 /* translators: 1: Path pointing to an Interactivity API state property, 2: Namespace for an Interactivity API store. */ 576 __( 'Uncaught error executing a derived state callback with path "%1$s" and namespace "%2$s".' ), 577 $path, 578 $ns 579 ), 580 '6.6.0' 581 ); 582 return null; 583 } finally { 584 // Remove the property's namespace from the stack. 585 array_pop( $this->namespace_stack ); 586 } 586 587 } 587 588 } -
branches/6.6/tests/phpunit/tests/interactivity-api/wpInteractivityAPI.php
r58327 r58869 1400 1400 } 1401 1401 1402 1403 1402 /** 1404 1403 * Tests the `evaluate` method for derived state functions that throw. … … 1423 1422 $result = $this->evaluate( 'state.derivedThatThrows' ); 1424 1423 $this->assertNull( $result ); 1424 } 1425 1426 /** 1427 * Tests the `evaluate` method for derived state intermediate values. 1428 * 1429 * @ticket 61741 1430 * 1431 * @covers ::evaluate 1432 */ 1433 public function test_evaluate_derived_state_intermediate() { 1434 $this->interactivity->state( 1435 'myPlugin', 1436 array( 1437 'derivedState' => function () { 1438 return array( 'property' => 'value' ); 1439 }, 1440 ) 1441 ); 1442 $this->set_internal_context_stack(); 1443 $this->set_internal_namespace_stack( 'myPlugin' ); 1444 1445 $result = $this->evaluate( 'state.derivedState.property' ); 1446 $this->assertSame( 'value', $result ); 1425 1447 } 1426 1448
Note: See TracChangeset
for help on using the changeset viewer.