Вход Регистрация
Файл: system/src/System/Http/Request.php
Строк: 128
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

namespace 
JohncmsSystemHttp;

use 
GuzzleHttpPsr7{
    
CachingStream,
    
LazyOpenStream,
    
ServerRequest
};
use 
PsrHttpMessageServerRequestInterface;

class 
Request extends ServerRequest
{
    
/**
     * Return a ServerRequest populated with superglobals:
     * $_GET
     * $_POST
     * $_COOKIE
     * $_FILES
     * $_SERVER
     *
     * @return ServerRequestInterface
     */
    
public static function fromGlobals()
    {
        
$method $_SERVER['REQUEST_METHOD'] ?? 'GET';
        
$headers getallheaders();
        
$uri self::getUriFromGlobals();
        
$body = new CachingStream(new LazyOpenStream('php://input''r+'));
        
$protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/'''$_SERVER['SERVER_PROTOCOL']) : '1.1';
        
$serverRequest = new self($method$uri/** @scrutinizer ignore-type */ $headers$body$protocol$_SERVER);

        return 
$serverRequest
            
->withCookieParams($_COOKIE)
            ->
withQueryParams($_GET)
            ->
withParsedBody($_POST)
            ->
withUploadedFiles(self::normalizeFiles($_FILES));
    }

    
/**
     * @param string $name
     * @param null|mixed $default
     * @param int $filter
     * @param mixed $options
     * @return mixed|null
     */
    
public function getQuery(string $name$default nullint $filter FILTER_DEFAULT$options null)
    {
        return 
$this->filterVar($name$this->getQueryParams(), $filter$options)
            ?? 
$default;
    }

    
/**
     * @param string $name
     * @param null|mixed $default
     * @param int $filter
     * @param mixed $options
     * @return mixed|null
     */
    
public function getPost(string $name$default nullint $filter FILTER_DEFAULT$options null)
    {
        return 
$this->filterVar($name$this->getParsedBody(), $filter$options)
            ?? 
$default;
    }

    
/**
     * @param string $name
     * @param null|mixed $default
     * @param int $filter
     * @param mixed $options
     * @return mixed|null
     */
    
public function getCookie(string $name$default nullint $filter FILTER_DEFAULT$options null)
    {
        return 
$this->filterVar($name$this->getCookieParams(), $filter$options)
            ?? 
$default;
    }

    
/**
     * @param string $name
     * @param null|mixed $default
     * @param int $filter
     * @param mixed $options
     * @return mixed|null
     */
    
public function getServer(string $name$default nullint $filter FILTER_DEFAULT$options null)
    {
        return 
$this->filterVar($name$this->getServerParams(), $filter$options)
            ?? 
$default;
    }

    
/**
     * @param string $key
     * @param mixed $var
     * @param int $filter
     * @param mixed $options
     * @return mixed|null
     */
    
private function filterVar(string $key$varint $filter$options)
    {
        if (
is_array($var) && isset($var[$key])) {
            
$result filter_var($var[$key], $filter$options);

            if (
false !== $result) {
                return 
$result;
            }
        }

        return 
null;
    }

    
/**
     * @param array $remove_params
     * @return string
     */
    
public function getQueryString(array $remove_params = []): string
    
{
        
$query_params $this->getQueryParams();
        if (! empty(
$remove_params)) {
            
$query_params array_diff_key($query_paramsarray_flip($remove_params));
        }
        
$str http_build_query($query_params);

        return 
$this->getUri()->getPath() . (! empty($str) ? '?' $str '');
    }
}
Онлайн: 1
Реклама