PageRenderTime 25ms CodeModel.GetById 15ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/framework/vendor/zend/Zend/Cache/Frontend/Output.php

http://zoop.googlecode.com/
PHP | 106 lines | 44 code | 9 blank | 53 comment | 7 complexity | bc45bc515c51f362fe8566cd3a43194d MD5 | raw file
  1<?php
  2/**
  3 * Zend Framework
  4 *
  5 * LICENSE
  6 *
  7 * This source file is subject to the new BSD license that is bundled
  8 * with this package in the file LICENSE.txt.
  9 * It is also available through the world-wide-web at this URL:
 10 * http://framework.zend.com/license/new-bsd
 11 * If you did not receive a copy of the license and are unable to
 12 * obtain it through the world-wide-web, please send an email
 13 * to license@zend.com so we can send you a copy immediately.
 14 *
 15 * @category   Zend
 16 * @package    Zend_Cache
 17 * @subpackage Zend_Cache_Frontend
 18 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 19 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 20 * @version    $Id: Output.php 20096 2010-01-06 02:05:09Z bkarwin $
 21 */
 22
 23
 24/**
 25 * @see Zend_Cache_Core
 26 */
 27require_once 'Zend/Cache/Core.php';
 28
 29
 30/**
 31 * @package    Zend_Cache
 32 * @subpackage Zend_Cache_Frontend
 33 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 34 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 35 */
 36class Zend_Cache_Frontend_Output extends Zend_Cache_Core
 37{
 38
 39    private $_idStack = array();
 40
 41    /**
 42     * Constructor
 43     *
 44     * @param  array $options Associative array of options
 45     * @return void
 46     */
 47    public function __construct(array $options = array())
 48    {
 49        parent::__construct($options);
 50        $this->_idStack = array();
 51    }
 52
 53    /**
 54     * Start the cache
 55     *
 56     * @param  string  $id                     Cache id
 57     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
 58     * @param  boolean $echoData               If set to true, datas are sent to the browser if the cache is hit (simpy returned else)
 59     * @return mixed True if the cache is hit (false else) with $echoData=true (default) ; string else (datas)
 60     */
 61    public function start($id, $doNotTestCacheValidity = false, $echoData = true)
 62    {
 63        $data = $this->load($id, $doNotTestCacheValidity);
 64        if ($data !== false) {
 65            if ( $echoData ) {
 66                echo($data);
 67                return true;
 68            } else {
 69                return $data;
 70            }
 71        }
 72        ob_start();
 73        ob_implicit_flush(false);
 74        $this->_idStack[] = $id;
 75        return false;
 76    }
 77
 78    /**
 79     * Stop the cache
 80     *
 81     * @param  array   $tags             Tags array
 82     * @param  int     $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
 83     * @param  string  $forcedDatas      If not null, force written datas with this
 84     * @param  boolean $echoData         If set to true, datas are sent to the browser
 85     * @param  int     $priority         integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends
 86     * @return void
 87     */
 88    public function end($tags = array(), $specificLifetime = false, $forcedDatas = null, $echoData = true, $priority = 8)
 89    {
 90        if ($forcedDatas === null) {
 91            $data = ob_get_contents();
 92            ob_end_clean();
 93        } else {
 94            $data =& $forcedDatas;
 95        }
 96        $id = array_pop($this->_idStack);
 97        if ($id === null) {
 98            Zend_Cache::throwException('use of end() without a start()');
 99        }
100        $this->save($data, $id, $tags, $specificLifetime, $priority);
101        if ($echoData) {
102            echo($data);
103        }
104    }
105
106}