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

📄 abstract.php

📁 Bug tracker, and reporter.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category   Zend * @package    Zend_Controller * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License *//** * Zend_Controller_Response_Abstract * * Base class for Zend_Controller responses * * @package Zend_Controller * @subpackage Response * @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_Controller_Response_Abstract{    /**     * Body content     * @var array     */    protected $_body = array();    /**     * Exception stack     * @var Exception     */    protected $_exceptions = array();    /**     * Array of headers. Each header is an array with keys 'name' and 'value'     * @var array     */    protected $_headers = array();    /**     * Array of raw headers. Each header is a single string, the entire header to emit     * @var array     */    protected $_headersRaw = array();    /**     * HTTP response code to use in headers     * @var int     */    protected $_httpResponseCode = 200;    /**     * Flag; is this response a redirect?     * @var boolean     */    protected $_isRedirect = false;    /**     * Whether or not to render exceptions; off by default     * @var boolean     */    protected $_renderExceptions = false;    /**     * Flag; if true, when header operations are called after headers have been     * sent, an exception will be raised; otherwise, processing will continue     * as normal. Defaults to true.     *     * @see canSendHeaders()     * @var boolean     */    public $headersSentThrowsException = true;    /**     * Normalize a header name     *     * Normalizes a header name to X-Capitalized-Names     *      * @param  string $name      * @return string     */    protected function _normalizeHeader($name)    {        $filtered = str_replace(array('-', '_'), ' ', (string) $name);        $filtered = ucwords(strtolower($filtered));        $filtered = str_replace(' ', '-', $filtered);        return $filtered;    }    /**     * Set a header     *     * If $replace is true, replaces any headers already defined with that     * $name.     *     * @param string $name     * @param string $value     * @param boolean $replace     * @return Zend_Controller_Response_Abstract     */    public function setHeader($name, $value, $replace = false)    {        $this->canSendHeaders(true);        $name  = $this->_normalizeHeader($name);        $value = (string) $value;        if ($replace) {            foreach ($this->_headers as $key => $header) {                if ($name == $header['name']) {                    unset($this->_headers[$key]);                }            }        }        $this->_headers[] = array(            'name'    => $name,            'value'   => $value,            'replace' => $replace        );        return $this;    }    /**     * Set redirect URL     *     * Sets Location header and response code. Forces replacement of any prior     * redirects.     *     * @param string $url     * @param int $code     * @return Zend_Controller_Response_Abstract     */    public function setRedirect($url, $code = 302)    {        $this->canSendHeaders(true);        $this->setHeader('Location', $url, true)             ->setHttpResponseCode($code);        return $this;    }    /**     * Is this a redirect?     *     * @return boolean     */    public function isRedirect()    {        return $this->_isRedirect;    }    /**     * Return array of headers; see {@link $_headers} for format     *     * @return array     */    public function getHeaders()    {        return $this->_headers;    }    /**     * Clear headers     *     * @return Zend_Controller_Response_Abstract     */    public function clearHeaders()    {        $this->_headers = array();        return $this;    }    /**     * Set raw HTTP header     *     * Allows setting non key => value headers, such as status codes     *     * @param string $value     * @return Zend_Controller_Response_Abstract     */    public function setRawHeader($value)    {        $this->canSendHeaders(true);        if ('Location' == substr($value, 0, 8)) {            $this->_isRedirect = true;        }        $this->_headersRaw[] = (string) $value;        return $this;    }    /**     * Retrieve all {@link setRawHeader() raw HTTP headers}     *     * @return array     */    public function getRawHeaders()    {        return $this->_headersRaw;    }    /**     * Clear all {@link setRawHeader() raw HTTP headers}     *     * @return Zend_Controller_Response_Abstract     */    public function clearRawHeaders()    {        $this->_headersRaw = array();        return $this;    }    /**     * Clear all headers, normal and raw     *     * @return Zend_Controller_Response_Abstract     */    public function clearAllHeaders()    {        return $this->clearHeaders()                    ->clearRawHeaders();    }    /**     * Set HTTP response code to use with headers     *     * @param int $code     * @return Zend_Controller_Response_Abstract     */    public function setHttpResponseCode($code)    {        if (!is_int($code) || (100 > $code) || (599 < $code)) {            require_once 'Zend/Controller/Response/Exception.php';            throw new Zend_Controller_Response_Exception('Invalid HTTP response code');        }        if ((300 <= $code) && (307 >= $code)) {            $this->_isRedirect = true;        } else {            $this->_isRedirect = false;        }        $this->_httpResponseCode = $code;        return $this;    }    /**     * Retrieve HTTP response code     *     * @return int     */    public function getHttpResponseCode()    {        return $this->_httpResponseCode;    }    /**     * Can we send headers?     *     * @param boolean $throw Whether or not to throw an exception if headers have been sent; defaults to false     * @return boolean     * @throws Zend_Controller_Response_Exception     */    public function canSendHeaders($throw = false)    {        $ok = headers_sent($file, $line);        if ($ok && $throw && $this->headersSentThrowsException) {            require_once 'Zend/Controller/Response/Exception.php';            throw new Zend_Controller_Response_Exception('Cannot send headers; headers already sent in ' . $file . ', line ' . $line);        }        return !$ok;    }    /**     * Send all headers     *     * Sends any headers specified. If an {@link setHttpResponseCode() HTTP response code}     * has been specified, it is sent with the first header.     *     * @return Zend_Controller_Response_Abstract     */    public function sendHeaders()    {        // Only check if we can send headers if we have headers to send        if (count($this->_headersRaw) || count($this->_headers) || (200 != $this->_httpResponseCode)) {            $this->canSendHeaders(true);        } elseif (200 == $this->_httpResponseCode) {            // Haven't changed the response code, and we have no headers            return $this;        }        $httpCodeSent = false;        foreach ($this->_headersRaw as $header) {            if (!$httpCodeSent && $this->_httpResponseCode) {                header($header, true, $this->_httpResponseCode);                $httpCodeSent = true;            } else {                header($header);            }        }        foreach ($this->_headers as $header) {            if (!$httpCodeSent && $this->_httpResponseCode) {                header($header['name'] . ': ' . $header['value'], $header['replace'], $this->_httpResponseCode);                $httpCodeSent = true;            } else {                header($header['name'] . ': ' . $header['value'], $header['replace']);            }        }        if (!$httpCodeSent) {            header('HTTP/1.1 ' . $this->_httpResponseCode);            $httpCodeSent = true;        }        return $this;    }    /**     * Set body content     *     * If $name is not passed, or is not a string, resets the entire body and     * sets the 'default' key to $content.     *     * If $name is a string, sets the named segment in the body array to     * $content.     *     * @param string $content     * @param null|string $name     * @return Zend_Controller_Response_Abstract     */    public function setBody($content, $name = null)    {        if ((null === $name) || !is_string($name)) {            $this->_body = array('default' => (string) $content);        } else {            $this->_body[$name] = (string) $content;        }        return $this;    }    /**     * Append content to the body content     *     * @param string $content     * @param null|string $name     * @return Zend_Controller_Response_Abstract     */    public function appendBody($content, $name = null)    {        if ((null === $name) || !is_string($name)) {            if (isset($this->_body['default'])) {                $this->_body['default'] .= (string) $content;            } else {                return $this->append('default', $content);            }        } elseif (isset($this->_body[$name])) {            $this->_body[$name] .= (string) $content;        } else {            return $this->append($name, $content);        }        return $this;

⌨️ 快捷键说明

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