Automattic\WooCommerce\Caching
ObjectCache::set()
Add an object to the cache, or update an already cached object.
Method of the class: ObjectCache{}
No Hooks.
Return
true|false
. True on success, false on error.
Usage
$ObjectCache = new ObjectCache(); $ObjectCache->set( $object, $id, $expiration ): bool;
- $object(object|array) (required)
- The object to be cached.
- $id(int|string|null)
- Id of the object to be cached, if null, get_object_id will be used to get it.
Default: null - $expiration(int)
- Expiration of the cached data in seconds from the current time, or DEFAULT_EXPIRATION to use the default value.
Default: self::DEFAULT_EXPIRATION
ObjectCache::set() ObjectCache::set code WC 9.4.2
public function set( $object, $id = null, int $expiration = self::DEFAULT_EXPIRATION ): bool { if ( null === $object ) { throw new CacheException( "Can't cache a null value", $this, $id ); } if ( ! is_array( $object ) && ! is_object( $object ) ) { throw new CacheException( "Can't cache a non-object, non-array value", $this, $id ); } if ( ! is_string( $id ) && ! is_int( $id ) && ! is_null( $id ) ) { throw new CacheException( "Object id must be an int, a string, or null for 'set'", $this, $id ); } $this->verify_expiration_value( $expiration ); $errors = $this->validate( $object ); if ( ! is_null( $errors ) ) { try { $id = $this->get_id_from_object_if_null( $object, $id ); } catch ( \Throwable $ex ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch // Nothing else to do, we won't be able to add any significant object id to the CacheException and that's it. } if ( count( $errors ) === 1 ) { throw new CacheException( 'Object validation/serialization failed: ' . $errors[0], $this, $id, $errors ); } elseif ( ! empty( $errors ) ) { throw new CacheException( 'Object validation/serialization failed', $this, $id, $errors ); } } $id = $this->get_id_from_object_if_null( $object, $id ); $this->last_cached_data = $object; return $this->get_cache_engine()->cache_object( $id, $object, self::DEFAULT_EXPIRATION === $expiration ? $this->default_expiration : $expiration, $this->get_object_type() ); }