$scenario */ public function key( array $scenario ): string { return self::PREFIX . md5( $this->fingerprint . '|' . wp_json_encode( $scenario ) ); } /** * @param array $scenario * @return list|null Null on a miss. */ public function get( array $scenario ): ?array { if ( $this->minutes < 1 ) { return null; } $stored = get_transient( $this->key( $scenario ) ); if ( ! is_array( $stored ) || ! isset( $stored['q'] ) || ! is_array( $stored['q'] ) ) { return null; } $quotes = array(); foreach ( $stored['q'] as $row ) { $quote = is_array( $row ) ? Quote::fromArray( $row ) : null; if ( null === $quote ) { return null; } $quotes[] = $quote; } return $quotes; } /** * @param array $scenario * @param list $quotes */ public function put( array $scenario, array $quotes ): void { if ( $this->minutes < 1 ) { return; } set_transient( $this->key( $scenario ), array( 'q' => array_map( static fn ( Quote $quote ): array => $quote->toArray(), $quotes ) ), $this->minutes * MINUTE_IN_SECONDS ); } }