📄 view.php
字号:
<?php
/**
* @version $Id: view.php 8028 2007-07-17 22:01:34Z jinx $
* @package Joomla.Framework
* @subpackage Cache
* @copyright Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
// Check to ensure this file is within the rest of the frameworkdefined('JPATH_BASE') or die();
/**
* Joomla! Cache view type object
*
* @author Louis Landry <louis.landry@joomla.org>
* @package Joomla.Framework
* @subpackage Cache
* @since 1.5
*/
class JCacheView extends JCache
{
/**
* Get the cached view data
*
* @access public
* @param object $view The view object to cache output for
* @param string $method The method name of the view method to cache output for
* @param string $group The cache data group
* @param string $id The cache data id
* @return boolean True if the cache is hit (false else)
* @since 1.5
*/
function get( &$view, $method, $id=false )
{
// Initialize variables
$data = false;
// If an id is not given generate it from the request
if ($id == false) {
$id = $this->_makeId($view, $method);
}
$data = parent::get($id);
if ($data !== false) {
$data = unserialize($data);
$document =& JFactory::getDocument();
$document->setHeadData((isset($data['head'])) ? $data['head'] : array());
echo (isset($data['body'])) ? $data['body'] : null;
return true;
}
/*
* No hit so we have to execute the view
*/
if (method_exists($view, $method)) {
// Capture and echo output
ob_start();
ob_implicit_flush( false );
$view->$method();
$data = ob_get_contents();
ob_end_clean();
echo $data;
/*
* For a view we have a special case. We need to cache not only the output from the view, but the state
* of the document head after the view has been rendered. This will allow us to properly cache any attached
* scripts or stylesheets or links or any other modifications that the view has made to the document object
*/
$cached = array();
// View body data
$cached['body'] = $data;
// Document head data
$document =& JFactory::getDocument();
$cached['head'] = $document->getHeadData();
// Store the cache data
$this->store(serialize($cached), $id);
}
return false;
}
/**
* Generate a view cache id
*
* @access private
* @param object $view The view object to cache output for
* @param string $method The method name to cache for the view object
* @return string MD5 Hash : view cache id
* @since 1.5
*/
function _makeId(&$view, $method)
{
return md5(serialize(array(JRequest::getURI(), get_class($view), $method)));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -