ForwardFW
[ class tree: ForwardFW ] [ index: ForwardFW ] [ all elements ]

Source for file Backend.php

Documentation is available at Backend.php

  1. <?php
  2. declare(encoding "utf-8");
  3. /**
  4.  * This file is part of ForwardFW a web application framework.
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public
  17.  * License along with this library; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20.  * PHP version 5
  21.  *
  22.  * @category   Cache
  23.  * @package    ForwardFW
  24.  * @subpackage Cache
  25.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  26.  * @copyright  2009-2010 The Authors
  27.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  28.  * @version    SVN: $Id: $
  29.  * @link       http://forwardfw.sourceforge.net
  30.  * @since      File available since Release 0.0.8
  31.  */
  32.  
  33. require_once 'ForwardFW/Config/Cache/Backend.php';
  34. require_once 'ForwardFW/Interface/Application.php';
  35. require_once 'ForwardFW/Interface/Cache/Backend.php';
  36.  
  37. require_once 'ForwardFW/Cache/Exception/TimeOut.php';
  38. require_once 'ForwardFW/Cache/Exception/NoData.php';
  39. require_once 'ForwardFW/Cache/Exception/IsGenerating.php';
  40.  
  41. /**
  42.  * Implementation of a Cache Backend.
  43.  *
  44.  * @category   Cache
  45.  * @package    ForwardFW
  46.  * @subpackage Cache
  47.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  48.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  49.  * @link       http://forwardfw.sourceforge.net
  50.  */
  51. abstract class ForwardFW_Cache_Backend implements ForwardFW_Interface_Cache_Backend
  52. {
  53.     /**
  54.      * Constructor
  55.      *
  56.      * @param ForwardFW_Interface_Application $application The running application.
  57.      * @param ForwardFW_Config_Cache_Backend  $config      Backend config.
  58.      */
  59.     public function __construct(
  60.         ForwardFW_Interface_Application $application,
  61.         ForwardFW_Config_Cache_Backend $config
  62.     {
  63.         $this->application $application;
  64.         $this->config $config;
  65.     }
  66.  
  67.     /**
  68.      * Gets data from Cache.
  69.      *
  70.      * @param string  $strHash Hash for data.
  71.      * @param integer $nTime   Oldest Time of data in cache.
  72.      *
  73.      * @return mixed Data from cache
  74.      * @throws ForwardFW_Cache_Exception_IsGenerating
  75.      * @throws ForwardFW_Cache_Exception_TimeOut
  76.      * @throws ForwardFW_Cache_Exception_NoData
  77.      */
  78.     public function getData($strHash$nTime)
  79.     {
  80.         $arData $this->readData($strHash);
  81.         if (!is_null($arData&& is_array($arData)) {
  82.             if ($arData['time'$nTime{
  83.                 if (!$arData['generating']{
  84.                     $this->application->getResponse()->addLog(
  85.                         'Cache Backend: Hit'
  86.                     );
  87.                     return $arData['data'];
  88.                 else {
  89.                     // Data is generating
  90.                     $this->application->getResponse()->addLog(
  91.                         'Cache Backend: Data isGenerating'
  92.                     );
  93.                     throw new ForwardFW_Cache_Exception_IsGenerating();
  94.                 }
  95.             else {
  96.                 // Data but timed out exception
  97.                 $this->application->getResponse()->addLog(
  98.                     'Cache Backend: Data timed out'
  99.                 );
  100.                 throw new ForwardFW_Cache_Exception_TimeOut();
  101.             }
  102.         else {
  103.             // No Data Exception
  104.             $this->application->getResponse()->addLog(
  105.                 'Cache Backend: No data available'
  106.             );
  107.             throw new ForwardFW_Cache_Exception_NoData();
  108.         }
  109.     }
  110.  
  111.  
  112.     /**
  113.      * Sets data into Cache.
  114.      *
  115.      * @param string $strHash Hash for data.
  116.      * @param mixed  $mData   Data to save into cache.
  117.      *
  118.      * @return void 
  119.      */
  120.     public function setData($strHash$mData)
  121.     {
  122.         $this->writeData(
  123.             $strHash,
  124.             array(
  125.                 'data' => $mData,
  126.                 'time' => time(),
  127.                 'generating' => false,
  128.             )
  129.         );
  130.     }
  131.  
  132.     /**
  133.      * Clears data from Cache.
  134.      *
  135.      * @param string $strHash Hash for data.
  136.      *
  137.      * @return void 
  138.      */
  139.     public function unsetData($strHash)
  140.     {
  141.         $this->removeData(
  142.             $strHash
  143.         );
  144.     }
  145.  
  146.     /**
  147.      * Sets marker that cache will be generated yet.
  148.      *
  149.      * @param string $strHash Hash of cache which is generated.
  150.      *
  151.      * @return void 
  152.      */
  153.     public function setGenerating($strHash)
  154.     {
  155.         $this->writeData(
  156.             $strHash,
  157.             array(
  158.                 'time' => time(),
  159.                 'generating' => true,
  160.             )
  161.         );
  162.     }
  163.  
  164.  
  165.     /**
  166.      * Writes data into the cache
  167.      *
  168.      *
  169.      * @param string $strHash Hash for data.
  170.      * @param array  $arData  Data to save into cache.
  171.      *
  172.      * @return void 
  173.      */
  174.     abstract protected function writeData($strHasharray $arData);
  175.  
  176.     /**
  177. /**
  178.      * Reads data from the cache
  179.      *
  180.      * @param string $strHash Hash for data.
  181.      *
  182.      * @return array Data from the storage
  183.      */
  184.     abstract protected function readData($strHash);
  185.  
  186.     /**
  187.      * Removes data from the cache
  188.      *
  189.      * @param string $strHash Hash for data.
  190.      *
  191.      * @return boolean Returns true if data removed otherwise false.
  192.      */
  193.     abstract protected function removeData($strHash);
  194.  
  195.     /**
  196.      * Clear complete cache
  197.      *
  198.      * @return void 
  199.      */
  200.     abstract protected function clear();
  201. }
  202. ?>

Documentation generated on Sun, 30 Jan 2011 20:46:38 +0100 by phpDocumentor 1.4.3