⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstract.php

📁 Bug tracker, and reporter.
💻 PHP
字号:
<?php/** * Zend Framework * * LICENSE * * This source file is subject to version 1.0 of the Zend Framework * license, that is bundled with this package in the file LICENSE.txt, and * is available through the world-wide-web at the following URL: * http://framework.zend.com/license/new-bsd. If you did not receive * a copy of the Zend Framework license and are unable to obtain it * through the world-wide-web, please send a note to license@zend.com * so we can mail you a copy immediately. * * @package    Zend_View * @subpackage Helper * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @version    $Id: Abstract.php 8920 2008-03-19 22:17:25Z thomas $ * @license    http://framework.zend.com/license/new-bsd     New BSD License *//** * Abstract class representing container for placeholder values * * @package    Zend_View * @subpackage Helpers * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License */abstract class Zend_View_Helper_Placeholder_Container_Abstract extends ArrayObject{    /**     * Whether or not to override all contents of placeholder     * @const string     */    const SET    = 'SET';    /**     * Whether or not to append contents to placeholder     * @const string     */    const APPEND = 'APPEND';    /**     * Whether or not to prepend contents to placeholder     * @const string     */    const PREPEND = 'PREPEND';    /**     * What text to prefix the placeholder with when rendering     * @var string     */    protected $_prefix    = '';    /**     * What text to append the placeholder with when rendering     * @var string     */    protected $_postfix   = '';    /**     * What string to use between individual items in the placeholder when rendering     * @var string     */    protected $_separator = '';    /**     * What string to use as the indentation of output, this will typically be spaces. Eg: '    '     * @var string     */    protected $_indent = '';        /**     * Whether or not we're already capturing for this given container     * @var bool     */    protected $_captureLock = false;    /**     * What type of capture (overwrite (set), append, prepend) to use     * @var string     */    protected $_captureType;    /**     * Key to which to capture content     * @var string     */    protected $_captureKey;        /**     * Constructor - This is needed so that we can attach a class member as the ArrayObject container     *     * @return void     */    public function __construct()    {        parent::__construct(array(), parent::ARRAY_AS_PROPS);    }        /**     * Set a single value     *     * @param  mixed $value     * @return void     */    public function set($value)    {        $this->exchangeArray(array($value));    }    /**     * Prepend a value to the top of the container     *      * @param  mixed $value      * @return void     */    public function prepend($value)    {        $values = $this->getArrayCopy();        array_unshift($values, $value);        $this->exchangeArray($values);    }    /**     * Retrieve container value     *     * If single element registered, returns that element; otherwise,     * serializes to array.     *     * @return mixed     */    public function getValue()    {        if (1 == count($this)) {            $keys = $this->getKeys();            $key  = array_shift($keys);            return $this[$key];        }        return $this->getArrayCopy();    }    /**     * Set prefix for __toString() serialization     *     * @param  string $prefix     * @return Zend_View_Helper_Placeholder_Container     */    public function setPrefix($prefix)    {        $this->_prefix = (string) $prefix;        return $this;    }    /**     * Retrieve prefix     *     * @return string     */    public function getPrefix()    {        return $this->_prefix;    }    /**     * Set postfix for __toString() serialization     *     * @param  string $postfix     * @return Zend_View_Helper_Placeholder_Container     */    public function setPostfix($postfix)    {        $this->_postfix = (string) $postfix;        return $this;    }    /**     * Retrieve postfix     *     * @return string     */    public function getPostfix()    {        return $this->_postfix;    }    /**     * Set separator for __toString() serialization     *     * Used to implode elements in container     *     * @param  string $separator     * @return Zend_View_Helper_Placeholder_Container     */    public function setSeparator($separator)    {        $this->_separator = (string) $separator;        return $this;    }    /**     * Retrieve separator     *     * @return string     */    public function getSeparator()    {        return $this->_separator;    }    /**     * Set the indentation string for __toString() serialization,     * optionally, if a number is passed, it will be the number of spaces     *     * @param  string|int $indent     * @return Zend_View_Helper_Placeholder_Container_Abstract     */    public function setIndent($indent)    {        $this->_indent = $this->getWhitespace($indent);        return $this;    }    /**     * Retrieve indentation     *     * @return string     */    public function getIndent()    {        return $this->_indent;    }    /**     * Retrieve whitespace representation of $indent     *      * @param  int|string $indent      * @return string     */    public function getWhitespace($indent)    {        if (is_int($indent)) {            $indent = str_repeat(' ', $indent);        }        return (string) $indent;    }       /**     * Start capturing content to push into placeholder     *     * @param  int $type How to capture content into placeholder; append, prepend, or set     * @return void     * @throws Zend_View_Helper_Placeholder_Exception if nested captures detected     */    public function captureStart($type = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $key = null)    {        if ($this->_captureLock) {            require_once 'Zend/View/Helper/Placeholder/Container/Exception.php';            throw new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest placeholder captures for the same placeholder');        }        $this->_captureLock = true;        $this->_captureType = $type;        if ((null !== $key) && is_scalar($key)) {            $this->_captureKey = (string) $key;        }        ob_start();    }    /**     * End content capture     *     * @return void     */    public function captureEnd()    {        $data               = ob_get_clean();        $key                = null;        $this->_captureLock = false;        if (null !== $this->_captureKey) {            $key = $this->_captureKey;        }        switch ($this->_captureType) {            case self::SET:                if (null !== $key) {                    $this[$key] = $data;                } else {                    $this->exchangeArray(array($data));                }                break;            case self::PREPEND:                if (null !== $key) {                    $array  = array($key => $data);                    $values = $this->getArrayCopy();                    $final  = $array + $values;                    $this->exchangeArray($final);                } else {                    $this->prepend($data);                }                break;            case self::APPEND:            default:                if (null !== $key) {                    if (empty($this[$key])) {                                                                               $this[$key] = $data;                                                                           } else {                                                                                               $this[$key] .= $data;                                                                          }                } else {                    $this[$this->nextIndex()] = $data;                }                break;        }    }    /**     * Get keys     *      * @return array     */    public function getKeys()    {        $array = $this->getArrayCopy();        return array_keys($array);    }    /**     * Next Index     *     * as defined by the PHP manual     * @return int     */    public function nextIndex()    {        $keys = $this->getKeys();        if (0 == count($keys)) {            return 0;        }        return $nextIndex = max($keys) + 1;    }        /**     * Render the placeholder     *     * @return string     */    public function toString($indent = null)    {        $indent = ($indent !== null)                 ? $this->getWhitespace($indent)                 : $this->getIndent();                $items  = $this->getArrayCopy();        $return = $indent                 . $this->getPrefix()                . implode($this->getSeparator(), $items)                . $this->getPostfix();        $return = preg_replace("/(\r\n?|\n)/", '$1' . $indent, $return);        return $return;    }    /**     * Serialize object to string     *     * @return string     */    public function __toString()    {        return $this->toString();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -