Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/tedivm/stash/src/Stash/Driver/Ephemeral.php
Строк: 95
<?php

/*
 * This file is part of the Stash package.
 *
 * (c) Robert Hafner <tedivm@tedivm.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace StashDriver;

use 
Stash;
use 
StashInterfacesDriverInterface;

/**
 * The ephemeral class exists to assist with testing the main Stash class. Since this is a very minimal driver we can
 * test Stash without having to worry about underlying problems interfering.
 *
 * @package Stash
 * @author  Robert Hafner <tedivm@tedivm.com>
 */
class Ephemeral implements DriverInterface
{

    
/**
     * Contains the cached data.
     *
     * @var array
     */
    
protected $store = array();

    
/**
     * Has no options.
     *
     * @param array $options
     */
    
public function setOptions(array $options = array())
    {

    }

    
/**
     * {@inheritdoc}
     */
    
public function __destruct()
    {

    }

    
/**
     * {@inheritdoc}
     */
    
public function getData($key)
    {
        
$key $this->getKeyIndex($key);

        return isset(
$this->store[$key]) ? $this->store[$key] : false;
    }

    
/**
     * Converts the key array into a passed function
     *
     * @param  array  $key
     * @return string
     */
    
protected function getKeyIndex($key)
    {
        
$index '';
        foreach (
$key as $value) {
            
$index .= str_replace('#''#:'$value) . '#';
        }

        return 
$index;
    }

    
/**
     * {@inheritdoc}
     */
    
public function storeData($key$data$expiration)
    {
        
$this->store[$this->getKeyIndex($key)] = array('data' => $data'expiration' => $expiration);

        return 
true;
    }

    
/**
     * {@inheritdoc}
     */
    
public function clear($key null)
    {
        if (!isset(
$key)) {
            
$this->store = array();
        } else {
            
$clearIndex $this->getKeyIndex($key);
            foreach (
$this->store as $index => $data) {
                if (
strpos($index$clearIndex) === 0) {
                    unset(
$this->store[$index]);
                }
            }
        }

        return 
true;
    }

    
/**
     * {@inheritdoc}
     */
    
public function purge()
    {
        
$now time();
        foreach (
$this->store as $index => $data) {
            if (
$data['expiration'] <= $now) {
                unset(
$this->store[$index]);
            }
        }

        return 
true;
    }

    
/**
     * This function checks to see if this driver is available. This always returns true because this
     * driver has no dependencies, begin a wrapper around other classes.
     *
     * {@inheritdoc}
     * @return bool true
     */
    
public static function isAvailable()
    {
        return 
true;
    }
}
Онлайн: 1
Реклама