framework/caching/Cache.php
public function add($key, $value, $duration = 0, $dependency = null)
    {
        if ($dependency !== null && $this->serializer !== false) {
            $dependency->evaluateDependency($this);
        }
        if ($this->serializer === null) {
            $value = serialize([$value, $dependency]);
        } elseif ($this->serializer !== false) {
            $value = call_user_func($this->serializer[0], [$value, $dependency]);
        }
        $key = $this->buildKey($key);

        return $this->addValue($key, $value, $duration);
    }
public function add($key, $value, $duration = 0, $dependency = null)
    {
        if ($dependency !== null && $this->serializer !== false) {
            $dependency->evaluateDependency($this);
        }
        if ($this->serializer === null) {
            $value = serialize([$value, $dependency]);
        } elseif ($this->serializer !== false) {
            $value = call_user_func($this->serializer[0], [$value, $dependency]);
        }
        $key = $this->buildKey($key);

        return $this->addValue($key, $value, $duration);
    }
Stores a value identified by a key into cache if the cache does not contain this key.
Nothing will be done if the cache already contains the key.
@param mixed $key a key identifying the value to be cached. This can be a simple string or
a complex data structure consisting of factors representing the key.
@param mixed $value the value to be cached
@param int $duration the number of seconds in which the cached value will expire. 0 means never expire.
@param Dependency $dependency dependency of the cached item. If the dependency changes,
the corresponding value in the cache will be invalidated when it is fetched via [[get()]].
This parameter is ignored if [[serializer]] is false.
@return bool whether the value is successfully stored into cache