/var/www/html_us/wp-content/plugins/woocommerce/src/Caching/WPCacheEngine.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php

namespace Automattic\WooCommerce\Caching;

/**
 * Implementation of CacheEngine that uses the built-in WordPress cache.
 */
class WPCacheEngine implements CacheEngine {
    use 
CacheNameSpaceTrait;

    
/**
     * Retrieves an object cached under a given key.
     *
     * @param string $key The key under which the object to retrieve is cached.
     * @param string $group The group under which the object is cached.
     *
     * @return array|object|null The cached object, or null if there's no object cached under the passed key.
     */
    
public function get_cached_objectstring $keystring $group '' ) {
        
$prefixed_key self::get_prefixed_key$key$group );
        
$value        wp_cache_get$prefixed_key$group );
        return 
false === $value null $value;
    }

    
/**
     * Retrieves a set of objects cached under the given keys.
     *
     * @param string[] $keys The keys under which the object to retrieve is cached.
     * @param string   $group The group under which the object is cached.
     *
     * @return array The cached array of objects keyed by the given keys, values will be null for any non-cached keys.
     */
    
public function get_cached_objects( array $keysstring $group '' ) {
        
$prefix  self::get_cache_prefix$group );
        
$key_map array_combine(
            
$keys,
            
array_map(
                function ( 
$key ) use ( $prefix ) {
                    return 
$prefix $key;
                },
                
$keys
            
)
        );

        
$cached_values wp_cache_get_multiplearray_values$key_map ), $group );
        
$return_values = array();
        foreach ( 
$key_map as $key => $prefixed_key ) {
            if ( isset( 
$cached_values$prefixed_key ] ) && false !== $cached_values$prefixed_key ] ) {
                
$return_values$key ] = $cached_values$prefixed_key ];
            } else {
                
$return_values$key ] = null;
            }
        }

        return 
$return_values;
    }

    
/**
     * Caches an object under a given key, and with a given expiration.
     *
     * @param string       $key The key under which the object will be cached.
     * @param array|object $object The object to cache.
     * @param int          $expiration Expiration for the cached object, in seconds.
     * @param string       $group The group under which the object will be cached.
     *
     * @return bool True if the object is cached successfully, false otherwise.
     */
    
public function cache_objectstring $key$objectint $expirationstring $group '' ): bool {
        
$prefixed_key self::get_prefixed_key$key$group );
        return 
false !== wp_cache_set$prefixed_key$object$group$expiration );
    }

    
/**
     * Caches an object under a given key, and with a given expiration.
     *
     * @param array  $objects The objects to cache keyed by the key to cache under.
     * @param int    $expiration Expiration for the cached object, in seconds.
     * @param string $group The group under which the object will be cached.
     *
     * @return array Array of return values, grouped by key. Each value is either
     *                true on success, or false on failure
     */
    
public function cache_objects( array $objectsint $expirationstring $group '' ): array {
        
$prefix self::get_cache_prefix$group );

        
$objects array_combine(
            
array_map(
                function ( 
$key ) use ( $prefix ) {
                    return 
$prefix $key;
                },
                
array_keys$objects )
            ),
            
$objects,
        );

        return 
wp_cache_set_multiple$objects$group$expiration );
    }

    
/**
     * Removes a cached object from the cache.
     *
     * @param string $key They key under which the object is cached.
     * @param string $group The group under which the object is cached.
     *
     * @return bool True if the object is removed from the cache successfully, false otherwise (because the object wasn't cached or for other reason).
     */
    
public function delete_cached_objectstring $keystring $group '' ): bool {
        
$prefixed_key self::get_prefixed_key$key$group );
        return 
false !== wp_cache_delete$prefixed_key$group );
    }

    
/**
     * Checks if an object is cached under a given key.
     *
     * @param string $key The key to verify.
     * @param string $group The group under which the object is cached.
     *
     * @return bool True if there's an object cached under the given key, false otherwise.
     */
    
public function is_cachedstring $keystring $group '' ): bool {
        
$prefixed_key self::get_prefixed_key$key$group );
        return 
false !== wp_cache_get$prefixed_key$group );
    }

    
/**
     * Deletes all cached objects under a given group.
     *
     * @param string $group The group to delete.
     *
     * @return bool True if the group is deleted successfully, false otherwise.
     */
    
public function delete_cache_groupstring $group '' ): bool {
        return 
false !== self::invalidate_cache_group$group );
    }
}