diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/cache.php --- a/wp/wp-includes/cache.php Wed Sep 21 18:19:35 2022 +0200 +++ b/wp/wp-includes/cache.php Tue Sep 27 16:37:53 2022 +0200 @@ -2,7 +2,7 @@ /** * Object Cache API * - * @link https://codex.wordpress.org/Class_Reference/WP_Object_Cache + * @link https://developer.wordpress.org/reference/classes/wp_object_cache/ * * @package WordPress * @subpackage Cache @@ -12,6 +12,17 @@ require_once ABSPATH . WPINC . '/class-wp-object-cache.php'; /** + * Sets up Object Cache Global and assigns it. + * + * @since 2.0.0 + * + * @global WP_Object_Cache $wp_object_cache + */ +function wp_cache_init() { + $GLOBALS['wp_object_cache'] = new WP_Object_Cache(); +} + +/** * Adds data to the cache, if the cache key doesn't already exist. * * @since 2.0.0 @@ -34,73 +45,91 @@ } /** - * Closes the cache. + * Adds multiple values to the cache in one call. + * + * @since 6.0.0 + * + * @see WP_Object_Cache::add_multiple() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * This function has ceased to do anything since WordPress 2.5. The - * functionality was removed along with the rest of the persistent cache. - * - * This does not mean that plugins can't implement this function when they need - * to make sure that the cache is cleaned up after WordPress no longer needs it. + * @param array $data Array of keys and values to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool[] Array of return values, grouped by key. Each value is either + * true on success, or false if cache key and group already exist. + */ +function wp_cache_add_multiple( array $data, $group = '', $expire = 0 ) { + global $wp_object_cache; + + return $wp_object_cache->add_multiple( $data, $group, $expire ); +} + +/** + * Replaces the contents of the cache with new data. * * @since 2.0.0 * - * @return true Always returns true. + * @see WP_Object_Cache::replace() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param int|string $key The key for the cache data that should be replaced. + * @param mixed $data The new data to store in the cache. + * @param string $group Optional. The group for the cache data that should be replaced. + * Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool True if contents were replaced, false if original value does not exist. */ -function wp_cache_close() { - return true; +function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { + global $wp_object_cache; + + return $wp_object_cache->replace( $key, $data, $group, (int) $expire ); } /** - * Decrements numeric cache item's value. - * - * @since 3.3.0 - * - * @see WP_Object_Cache::decr() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * Saves the data to the cache. * - * @param int|string $key The cache key to decrement. - * @param int $offset Optional. The amount by which to decrement the item's value. Default 1. - * @param string $group Optional. The group the key is in. Default empty. - * @return int|false The item's new value on success, false on failure. - */ -function wp_cache_decr( $key, $offset = 1, $group = '' ) { - global $wp_object_cache; - - return $wp_object_cache->decr( $key, $offset, $group ); -} - -/** - * Removes the cache contents matching key and group. + * Differs from wp_cache_add() and wp_cache_replace() in that it will always write data. * * @since 2.0.0 * - * @see WP_Object_Cache::delete() + * @see WP_Object_Cache::set() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param int|string $key What the contents in the cache are called. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @return bool True on successful removal, false on failure. + * @param int|string $key The cache key to use for retrieval later. + * @param mixed $data The contents to store in the cache. + * @param string $group Optional. Where to group the cache contents. Enables the same key + * to be used across groups. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool True on success, false on failure. */ -function wp_cache_delete( $key, $group = '' ) { +function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; - return $wp_object_cache->delete( $key, $group ); + return $wp_object_cache->set( $key, $data, $group, (int) $expire ); } /** - * Removes all cache items. + * Sets multiple values to the cache in one call. * - * @since 2.0.0 + * @since 6.0.0 * - * @see WP_Object_Cache::flush() + * @see WP_Object_Cache::set_multiple() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @return bool True on success, false on failure. + * @param array $data Array of keys and values to be set. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool[] Array of return values, grouped by key. Each value is either + * true on success, or false on failure. */ -function wp_cache_flush() { +function wp_cache_set_multiple( array $data, $group = '', $expire = 0 ) { global $wp_object_cache; - return $wp_object_cache->flush(); + return $wp_object_cache->set_multiple( $data, $group, $expire ); } /** @@ -137,7 +166,8 @@ * @param string $group Optional. Where the cache contents are grouped. Default empty. * @param bool $force Optional. Whether to force an update of the local cache * from the persistent cache. Default false. - * @return array Array of values organized into groups. + * @return array Array of return values, grouped by key. Each value is either + * the cache contents on success, or false on failure. */ function wp_cache_get_multiple( $keys, $group = '', $force = false ) { global $wp_object_cache; @@ -146,7 +176,44 @@ } /** - * Increment numeric cache item's value + * Removes the cache contents matching key and group. + * + * @since 2.0.0 + * + * @see WP_Object_Cache::delete() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param int|string $key What the contents in the cache are called. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return bool True on successful removal, false on failure. + */ +function wp_cache_delete( $key, $group = '' ) { + global $wp_object_cache; + + return $wp_object_cache->delete( $key, $group ); +} + +/** + * Deletes multiple values from the cache in one call. + * + * @since 6.0.0 + * + * @see WP_Object_Cache::delete_multiple() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param array $keys Array of keys under which the cache to deleted. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return bool[] Array of return values, grouped by key. Each value is either + * true on success, or false if the contents were not deleted. + */ +function wp_cache_delete_multiple( array $keys, $group = '' ) { + global $wp_object_cache; + + return $wp_object_cache->delete_multiple( $keys, $group ); +} + +/** + * Increments numeric cache item's value. * * @since 3.3.0 * @@ -154,7 +221,8 @@ * @global WP_Object_Cache $wp_object_cache Object cache global instance. * * @param int|string $key The key for the cache contents that should be incremented. - * @param int $offset Optional. The amount by which to increment the item's value. Default 1. + * @param int $offset Optional. The amount by which to increment the item's value. + * Default 1. * @param string $group Optional. The group the key is in. Default empty. * @return int|false The item's new value on success, false on failure. */ @@ -165,78 +233,69 @@ } /** - * Sets up Object Cache Global and assigns it. - * - * @since 2.0.0 + * Decrements numeric cache item's value. * - * @global WP_Object_Cache $wp_object_cache - */ -function wp_cache_init() { - $GLOBALS['wp_object_cache'] = new WP_Object_Cache(); -} - -/** - * Replaces the contents of the cache with new data. + * @since 3.3.0 * - * @since 2.0.0 - * - * @see WP_Object_Cache::replace() + * @see WP_Object_Cache::decr() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param int|string $key The key for the cache data that should be replaced. - * @param mixed $data The new data to store in the cache. - * @param string $group Optional. The group for the cache data that should be replaced. - * Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool False if original value does not exist, true if contents were replaced + * @param int|string $key The cache key to decrement. + * @param int $offset Optional. The amount by which to decrement the item's value. + * Default 1. + * @param string $group Optional. The group the key is in. Default empty. + * @return int|false The item's new value on success, false on failure. */ -function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { +function wp_cache_decr( $key, $offset = 1, $group = '' ) { global $wp_object_cache; - return $wp_object_cache->replace( $key, $data, $group, (int) $expire ); + return $wp_object_cache->decr( $key, $offset, $group ); } /** - * Saves the data to the cache. - * - * Differs from wp_cache_add() and wp_cache_replace() in that it will always write data. + * Removes all cache items. * * @since 2.0.0 * - * @see WP_Object_Cache::set() + * @see WP_Object_Cache::flush() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param int|string $key The cache key to use for retrieval later. - * @param mixed $data The contents to store in the cache. - * @param string $group Optional. Where to group the cache contents. Enables the same key - * to be used across groups. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). * @return bool True on success, false on failure. */ -function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { +function wp_cache_flush() { global $wp_object_cache; - return $wp_object_cache->set( $key, $data, $group, (int) $expire ); + return $wp_object_cache->flush(); } /** - * Switches the internal blog ID. + * Removes all cache items from the in-memory runtime cache. * - * This changes the blog id used to create keys in blog specific groups. + * @since 6.0.0 * - * @since 3.5.0 + * @see WP_Object_Cache::flush() * - * @see WP_Object_Cache::switch_to_blog() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. - * - * @param int $blog_id Site ID. + * @return bool True on success, false on failure. */ -function wp_cache_switch_to_blog( $blog_id ) { - global $wp_object_cache; +function wp_cache_flush_runtime() { + return wp_cache_flush(); +} - $wp_object_cache->switch_to_blog( $blog_id ); +/** + * Closes the cache. + * + * This function has ceased to do anything since WordPress 2.5. The + * functionality was removed along with the rest of the persistent cache. + * + * This does not mean that plugins can't implement this function when they need + * to make sure that the cache is cleaned up after WordPress no longer needs it. + * + * @since 2.0.0 + * + * @return true Always returns true. + */ +function wp_cache_close() { + return true; } /** @@ -267,7 +326,25 @@ } /** - * Reset internal cache keys and structures. + * Switches the internal blog ID. + * + * This changes the blog id used to create keys in blog specific groups. + * + * @since 3.5.0 + * + * @see WP_Object_Cache::switch_to_blog() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * + * @param int $blog_id Site ID. + */ +function wp_cache_switch_to_blog( $blog_id ) { + global $wp_object_cache; + + $wp_object_cache->switch_to_blog( $blog_id ); +} + +/** + * Resets internal cache keys and structures. * * If the cache back end uses global blog or site IDs as part of its cache keys, * this function instructs the back end to reset those keys and perform any cleanup @@ -276,17 +353,16 @@ * This function is deprecated. Use wp_cache_switch_to_blog() instead of this * function when preparing the cache for a blog switch. For clearing the cache * during unit tests, consider using wp_cache_init(). wp_cache_init() is not - * recommended outside of unit tests as the performance penalty for using it is - * high. + * recommended outside of unit tests as the performance penalty for using it is high. * - * @since 2.6.0 - * @deprecated 3.5.0 WP_Object_Cache::reset() + * @since 3.0.0 + * @deprecated 3.5.0 Use wp_cache_switch_to_blog() * @see WP_Object_Cache::reset() * * @global WP_Object_Cache $wp_object_cache Object cache global instance. */ function wp_cache_reset() { - _deprecated_function( __FUNCTION__, '3.5.0', 'WP_Object_Cache::reset()' ); + _deprecated_function( __FUNCTION__, '3.5.0', 'wp_cache_switch_to_blog()' ); global $wp_object_cache;