Вход Регистрация
Файл: core/response.php
Строк: 165
<?php

final class PEEP_Response
{
    
/**
     * HTTP Header constants
     */
    
const HD_CACHE_CONTROL 'Cache-Control';
    const 
HD_CNT_DISPOSITION 'Content-Disposition';
    const 
HD_CNT_LENGTH 'Content-Length';
    const 
HD_CONNECTION 'Connection';
    const 
HD_PRAGMA 'Pragma';
    const 
HD_CNT_TYPE 'Content-Type';
    const 
HD_EXPIRES 'Expires';
    const 
HD_LAST_MODIFIED 'Last-Modified';
    const 
HD_LOCATION 'Location';

    
/**
     * Headers to send with response
     *
     * @var array
     */
    
private $headers = array();

    
/**
     * Document to send
     *
     * @var PEEP_Document
     */
    
private $document;

    
/**
     * Rendered markup
     *
     * @var string
     */
    
private $markup '';

    
/**
     * Singleton instance.
     *
     * @var PEEP_Response
     */
    
private static $classInstance;

    
/**
     * Returns an instance of class (singleton pattern implementation).
     *
     * @return PEEP_Response
     */
    
public static function getInstance()
    {
        if ( 
self::$classInstance === null )
        {
            
self::$classInstance = new self();
        }

        return 
self::$classInstance;
    }

    
/**
     * Constructor.
     */
    
private function __construct()
    {
        
    }

    
/**
     * @return PEEP_Document
     */
    
public function getDocument()
    {
        return 
$this->document;
    }

    
/**
     * @param PEEP_Document $document
     */
    
public function setDocumentPEEP_Document $document )
    {
        
$this->document $document;
    }

    
/**
     * Adds headers to response.
     *
     * @param string $name
     * @param string $value
     */
    
public function setHeader$name$value )
    {
        
$this->headers[trim($name)] = trim($value);
    }

    
/**
     * @return array
     */
    
public function getHeaders()
    {
        return 
$this->headers;
    }

    
/**
     * @param array $headers
     */
    
public function setHeaders( array $headers )
    {
        
$this->headers $headers;
    }

    
/**
     * Clears all headers.
     */
    
public function clearHeaders()
    {
        
$this->headers = array();
    }

    
/**
     * Sends all added headers.
     */
    
public function sendHeaders()
    {
        if ( !
headers_sent() )
        {
            foreach ( 
$this->headers as $headerName => $headerValue )
            {
                if ( 
substr(mb_strtolower($headerName), 04) === 'http' )
                {
                    
header($headerName ' ' $headerValue);
                }
                else if ( 
mb_strtolower($headerName) === 'status' )
                {
                    
header(ucfirst(mb_strtolower($headerName)) . ': ' $headerValuenull, (int) $headerValue);
                }
                else
                {
                    
header($headerName ':' $headerValue);
                }
            }
        }
    }

    
/**
     * @return string
     */
    
public function getMarkup()
    {
        return 
$this->markup;
    }

    
/**
     * @param string $markup
     */
    
public function setMarkup$markup )
    {
        
$this->markup $markup;
    }

    
/**
     * Sends generated response
     *
     */
    
public function respond()
    {
        
$event = new PEEP_Event(PEEP_EventManager::ON_BEFORE_DOCUMENT_RENDER);
        
PEEP::getEventManager()->trigger($event);
        if ( 
$this->document !== null )
        {
            
$renderedMarkup $this->document->render();

            
$event = new BASE_CLASS_EventCollector('base.append_markup');
            
PEEP::getEventManager()->trigger($event);
            
$data $event->getData();
            
$this->markup str_replace(PEEP_Document::APPEND_PLACEHOLDERPHP_EOL implode(PHP_EOL$data), $renderedMarkup);
        }

        
$event = new PEEP_Event(PEEP_EventManager::ON_AFTER_DOCUMENT_RENDER);
        
PEEP::getEventManager()->trigger($event);

        
$this->sendHeaders();

        if ( 
PEEP::getRequest()->isAjax() )
        {
            exit();
        }

        if ( 
PEEP_PROFILER_ENABLE || PEEP_DEV_MODE )
        {
            
UTIL_Profiler::getInstance()->mark('final');
        }

        if ( 
PEEP_DEBUG_MODE )
        {
            echo 
ob_get_clean();
        }

        echo 
$this->markup;

        
$event = new PEEP_Event('core.exit');
        
PEEP::getEventManager()->trigger($event);
    }
}
Онлайн: 1
Реклама