Merge "rdbms: Replace func_get_args() in SQLPlatform::buildLike()"
[mediawiki.git] / includes / libs / objectcache / SerializedValueContainer.php
blob8a9192a57db5b2f8162e0763a0b40f68ae8e8cf4
1 <?php
3 namespace Wikimedia\ObjectCache;
5 use stdClass;
7 /**
8 * Helper class for segmenting large cache values without relying
9 * on serializing classes.
11 * @internal
12 * @since 1.34
13 * @ingroup Cache
15 class SerializedValueContainer {
16 private const SCHEMA = '__svc_schema__';
17 // 64 bit UID
18 private const SCHEMA_SEGMENTED = 'CAYCDAgCDw4';
19 public const SEGMENTED_HASHES = '__hashes__';
21 /**
22 * @param string[] $segmentHashList Ordered list of hashes for each segment
23 * @return stdClass
25 public static function newSegmented( array $segmentHashList ) {
26 return (object)[
27 self::SCHEMA => self::SCHEMA_SEGMENTED,
28 self::SEGMENTED_HASHES => $segmentHashList
32 /**
33 * @param mixed $value
34 * @return bool
36 public static function isSegmented( $value ): bool {
37 return (
38 $value instanceof stdClass &&
39 ( $value->{self::SCHEMA} ?? null ) === self::SCHEMA_SEGMENTED