WordPress.org

Make WordPress Core

Ticket #20004: 20004.2.diff

File 20004.2.diff, 4.5 KB (added by andy, 6 years ago)

Now without $this->last_result and wp_cache_found()

  • wp-includes/cache.php

     
    103103 * @param int|string $key What the contents in the cache are called
    104104 * @param string $group Where the cache contents are grouped
    105105 * @param bool $force Whether to force an update of the local cache from the persistent cache (default is false)
     106 * @param &bool $found Whether key was found in the cache. Disambiguates a return of false, a storable value.
    106107 * @return bool|mixed False on failure to retrieve contents or the cache
    107108 *              contents on success
    108109 */
    109 function wp_cache_get( $key, $group = '', $force = false ) {
     110function wp_cache_get( $key, $group = '', $force = false, &$found = null ) {
    110111        global $wp_object_cache;
    111112
    112         return $wp_object_cache->get( $key, $group, $force );
     113        return $wp_object_cache->get( $key, $group, $force, $found );
    113114}
    114115
    115116/**
     
    272273        /**
    273274         * Adds data to the cache if it doesn't already exist.
    274275         *
    275          * @uses WP_Object_Cache::get Checks to see if the cache already has data.
     276         * @uses WP_Object_Cache::_exists Checks to see if the cache already has data.
    276277         * @uses WP_Object_Cache::set Sets the data after the checking the cache
    277278         *              contents existence.
    278279         *
     
    288289                if ( wp_suspend_cache_addition() )
    289290                        return false;
    290291
    291                 if ( empty ($group) )
     292                if ( empty( $group ) )
    292293                        $group = 'default';
    293294
    294                 if (false !== $this->get($key, $group))
     295                if ( $this->_exists($key, $group) )
    295296                        return false;
    296297
    297298                return $this->set($key, $data, $group, $expire);
     
    322323         * @return false|int False on failure, the item's new value on success.
    323324         */
    324325        function decr( $key, $offset = 1, $group = 'default' ) {
    325                 if ( ! isset( $this->cache[ $group ][ $key ] ) )
     326                if ( ! $this->_exists( $key, $group ) )
    326327                        return false;
    327328
    328329                if ( ! is_numeric( $this->cache[ $group ][ $key ] ) )
     
    354355         * @return bool False if the contents weren't deleted and true on success
    355356         */
    356357        function delete($key, $group = 'default', $force = false) {
    357                 if (empty ($group))
     358                if ( empty( $group ) )
    358359                        $group = 'default';
    359360
    360                 if (!$force && false === $this->get($key, $group))
     361                if ( ! $force && ! $this->_exists( $key, $group ) )
    361362                        return false;
    362363
    363                 unset ($this->cache[$group][$key]);
     364                unset( $this->cache[$group][$key] );
    364365                return true;
    365366        }
    366367
     
    394395         * @return bool|mixed False on failure to retrieve contents or the cache
    395396         *              contents on success
    396397         */
    397         function get( $key, $group = 'default', $force = false) {
    398                 if ( empty ($group) )
     398        function get( $key, $group = 'default', $force = false, &$found = null ) {
     399                if ( empty( $group ) )
    399400                        $group = 'default';
    400401
    401                 if ( isset ($this->cache[$group][$key]) ) {
     402                if ( $this->_exists( $key, $group ) ) {
     403                        $found = true;
    402404                        $this->cache_hits += 1;
    403405                        if ( is_object($this->cache[$group][$key]) )
    404406                                return clone $this->cache[$group][$key];
     
    406408                                return $this->cache[$group][$key];
    407409                }
    408410
     411                $found = false;
    409412                $this->cache_misses += 1;
    410413                return false;
    411414        }
     
    421424         * @return false|int False on failure, the item's new value on success.
    422425         */
    423426        function incr( $key, $offset = 1, $group = 'default' ) {
    424                 if ( ! isset( $this->cache[ $group ][ $key ] ) )
     427                if ( empty( $group ) )
     428                        $group = 'default';
     429
     430                if ( ! $this->_exists( $key, $group ) )
    425431                        return false;
    426432
    427433                if ( ! is_numeric( $this->cache[ $group ][ $key ] ) )
     
    450456         * @return bool False if not exists, true if contents were replaced
    451457         */
    452458        function replace($key, $data, $group = 'default', $expire = '') {
    453                 if (empty ($group))
     459                if ( empty( $group ) )
    454460                        $group = 'default';
    455461
    456                 if ( false === $this->get($key, $group) )
     462                if ( ! $this->_exists( $key, $group ) )
    457463                        return false;
    458464
    459465                return $this->set($key, $data, $group, $expire);
     
    493499         * @return bool Always returns true
    494500         */
    495501        function set($key, $data, $group = 'default', $expire = '') {
    496                 if ( empty ($group) )
     502                if ( empty( $group ) )
    497503                        $group = 'default';
    498504
    499                 if ( null === $data )
    500                         $data = '';
    501 
    502505                if ( is_object($data) )
    503506                        $data = clone $data;
    504507
     
    527530        }
    528531
    529532        /**
     533         * Utility function to determine whether a key exists in the cache.
     534         * @access private
     535         */
     536        function _exists($key, $group) {
     537                return is_array( $this->cache[$group] ) && array_key_exists( $key, $this->cache[$group] );
     538        }
     539
     540
     541        /**
    530542         * Sets up object properties; PHP 5 style constructor
    531543         *
    532544         * @since 2.0.8