Symfony\Component\Cache\Adapter\PhpFilesAdapter::doSave PHP 메소드

doSave() 보호된 메소드

protected doSave ( array $values, $lifetime )
$values array
    protected function doSave(array $values, $lifetime)
    {
        $ok = true;
        $data = array($lifetime ? time() + $lifetime : PHP_INT_MAX, '');
        $allowCompile = 'cli' !== PHP_SAPI || ini_get('opcache.enable_cli');
        foreach ($values as $key => $value) {
            if (null === $value || is_object($value)) {
                $value = serialize($value);
            } elseif (is_array($value)) {
                $serialized = serialize($value);
                $unserialized = parent::unserialize($serialized);
                // Store arrays serialized if they contain any objects or references
                if ($unserialized !== $value || false !== strpos($serialized, ';R:') && preg_match('/;R:[1-9]/', $serialized)) {
                    $value = $serialized;
                }
            } elseif (is_string($value)) {
                // Serialize strings if they could be confused with serialized objects or arrays
                if ('N;' === $value || isset($value[2]) && ':' === $value[1]) {
                    $value = serialize($value);
                }
            } elseif (!is_scalar($value)) {
                throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable %s value.', $key, gettype($value)));
            }
            $data[1] = $value;
            $file = $this->getFile($key, true);
            $ok = $this->write($file, '<?php return ' . var_export($data, true) . ';') && $ok;
            if ($allowCompile) {
                @opcache_compile_file($file);
            }
        }
        return $ok;
    }