Browse Source

Added "memory" (array based) cache driver for easier unit testing of application cache operations for developers.

Signed-off-by: Taylor Otwell <taylorotwell@gmail.com>
Taylor Otwell 12 years ago
parent
commit
51183c348d
3 changed files with 70 additions and 1 deletions
  1. 1 1
      application/config/cache.php
  2. 3 0
      laravel/cache.php
  3. 66 0
      laravel/cache/drivers/memory.php

+ 1 - 1
application/config/cache.php

@@ -11,7 +11,7 @@ return array(
 	| be used to increase the performance of your application by storing any
 	| be used to increase the performance of your application by storing any
 	| commonly accessed data in memory, a file, or some other storage.
 	| commonly accessed data in memory, a file, or some other storage.
 	|
 	|
-	| A variety of awesome drivers are available for you to use with Laravel.
+	| A variety of great drivers are available for you to use with Laravel.
 	| Some, like APC, are extremely fast. However, if that isn't an option
 	| Some, like APC, are extremely fast. However, if that isn't an option
 	| in your environment, try file or database caching.
 	| in your environment, try file or database caching.
 	|
 	|

+ 3 - 0
laravel/cache.php

@@ -56,6 +56,9 @@ class Cache {
 			case 'memcached':
 			case 'memcached':
 				return new Cache\Drivers\Memcached(Memcached::connection(), Config::get('cache.key'));
 				return new Cache\Drivers\Memcached(Memcached::connection(), Config::get('cache.key'));
 
 
+			case 'memory':
+				return new Cache\Drivers\Memory;
+
 			case 'redis':
 			case 'redis':
 				return new Cache\Drivers\Redis(Redis::db());
 				return new Cache\Drivers\Redis(Redis::db());
 
 

+ 66 - 0
laravel/cache/drivers/memory.php

@@ -0,0 +1,66 @@
+<?php namespace Laravel\Cache\Drivers;
+
+class Memory extends Driver {
+
+	/**
+	 * The in-memory array of cached items.
+	 *
+	 * @var string
+	 */
+	protected $storage = array();
+
+	/**
+	 * Determine if an item exists in the cache.
+	 *
+	 * @param  string  $key
+	 * @return bool
+	 */
+	public function has($key)
+	{
+		return ( ! is_null($this->get($key)));
+	}
+
+	/**
+	 * Retrieve an item from the cache driver.
+	 *
+	 * @param  string  $key
+	 * @return mixed
+	 */
+	protected function retrieve($key)
+	{
+		if (array_key_exists($key, $this->storage))
+		{
+			return $this->storage[$key];
+		}
+	}
+
+	/**
+	 * Write an item to the cache for a given number of minutes.
+	 *
+	 * <code>
+	 *		// Put an item in the cache for 15 minutes
+	 *		Cache::put('name', 'Taylor', 15);
+	 * </code>
+	 *
+	 * @param  string  $key
+	 * @param  mixed   $value
+	 * @param  int     $minutes
+	 * @return void
+	 */
+	public function put($key, $value, $minutes)
+	{
+		$this->storage[$key] = $value;
+	}
+
+	/**
+	 * Delete an item from the cache.
+	 *
+	 * @param  string  $key
+	 * @return void
+	 */
+	public function forget($key)
+	{
+		unset($this->storage[$key]);
+	}
+
+}