Вход Регистрация
Файл: Neiron/Kernel/Response/ResponseHeaders.php
Строк: 94
<?php
/**
 * PHP 5x framework с открытым иходным кодом
 */
namespace NeironKernelResponse;

use 
NeironAPIKernelResponseResponseHeadersInterface;
use 
NeironAPIKernelRequestInterface;

/**
 * Класс для управления заголовками вывода
 * @author KpuTuK
 * @version 1.0.0
 * @package Neiron framework
 * @category Kernel
 * @link
 */
class ResponseHeaders implements ResponseHeadersInterface
{
    private 
$cookies = array();
    
/**
     * Массив заголовков
     * @var array
     */
    
private $headers = array();
    
/**
     * Конструктор класса
     * @param array $headers Массив заголовков
     * @param NeironArhitectureKernelRequestInterface $request
     */
    
public function __construct(array $headersRequestInterface $request)
    {
        
$list = array();
        foreach (
$request->server() as $key => $value) {
            if (
strpos($key'HTTP_') !== false) {
                
$list[
                        
ucfirst(substr(strtolower(strtr($key'_''-')), 5)) . ':'
                        
] = $value;
            }
        }
        
$this->headers array_replace($list$headers);
        
$this->cookies $request->cookies->getAll(true);
    }
    
/**
     * Удаляет/добавляет/выводит заголовки
     * @param mixed $name Массив заголовков или имя заголовка
     * @param string $value Содержимое заголовка
     * @return mixed
     */
    
public function headers($name null$value null)
    {
        if (
is_array($name)) {
            return 
$this->headers array_merge($this->headers$name);
        }
        
// Передача всего содержимого
        
if ($name === null && $value === null) {
            return 
$this->headers;
        }
        
// Проверка на наличие и передача переменной из массива
        
if ($name !== null && $value === null) {
            if (
array_key_exists($name$this->headers)) {
                return 
$this->headers[$name];
            }
            return 
false;
        }
        
// Запись переменной
        
if ($name !== null && $value !== null) {
            return 
$this->headers[$name] = $value;
        }
    }
    
/**
     * Отпраляет заголовки если они еще не были отправлены
     * @return NeironKernelResponseResponseHeaders
     */
    
public function sendHeaders()
    {
        if (
headers_sent()) {
            return 
$this;
        }
        foreach (
$this->headers as $key => $value) {
            
header($key ' ' $value);
        }
        foreach (
$this->cookies as $cookie) {
            
setcookie(
                    
$cookie['key'], $cookie['value'], $cookie['ttl'], $cookie['path'], $cookie['domain'], $cookie['secure'], $cookie['httponly']
            );
        }
        return 
$this;
    }
    
/**
     * Выводит массив кодировок
     * @return array
     */
    
public function getEncodings()
    {
        return 
$this->parseAccept($this->headers['Accept-Encoding']);
    }
    
/**
     * Выводит Accept заголовки
     * @return array
     */
    
public function getAccepts()
    {
        
$list = array();
        foreach (
$this->parseAccept($this->headers['Accept']) as $accept) {
            if (
strpos($accept'/') !== false) {
                
$list[] = $accept;
            }
        }
        return 
$list;
    }
    
/**
     * Выводит массив языков
     * @return array
     */
    
public function getLanguages()
    {
        
$list = array();
        foreach (
$this->parseAccept($this->headers['Accept-Language']) as $lang) {
            if (
strpos($lang'-') !== false) {
                
$list[] = $lang;
            }
        }
        return 
$list;
    }
    
/**
     * Прассит Accept Заголовки
     * @param string $accept
     * @return array
     */
    
private function parseAccept($accept)
    {
        
$list = array();
        foreach (
explode(','$accept) as $str) {
            foreach (
explode(';'$str) as $param) {
                
$list[] = $param;
            }
        }
        return 
$list;
    }
}
Онлайн: 2
Реклама