PHPColibri/framework

View on GitHub
Http/Request.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
namespace Colibri\Http;

use Colibri\Pattern\Helper;
use Colibri\Util\Str;

/**
 * Request helper.
 */
class Request extends Helper
{
    /**
     * Tests if requested uri begins with specified string.
     *
     * @param string $uriPart
     *
     * @return bool
     */
    public static function beginsWith($uriPart)
    {
        return Str::beginsWith($_SERVER['REQUEST_URI'], $uriPart);
    }

    /**
     * Tests if requested uri is exactly specified string.
     *
     * @param string $uri
     *
     * @return bool
     */
    public static function is($uri)
    {
        return $_SERVER['REQUEST_URI'] === $uri;
    }

    /**
     * @param int $mainDomainLevel
     *
     * @return string|null
     */
    public static function domainPrefix($mainDomainLevel = 2)
    {
        static $domainPrefix = null;

        return $domainPrefix ?? $domainPrefix = self::retrieveDomainPrefix($mainDomainLevel);
    }

    /**
     * @param int $mainDomainLevel
     *
     * @return string
     */
    private static function retrieveDomainPrefix(int $mainDomainLevel): string
    {
        $host  = $_SERVER['HTTP_HOST'];
        $parts = explode('.', $host);
        for ($i = 0; $i < $mainDomainLevel; $i++) {
            array_pop($parts);
        }

        return implode('.', $parts);
    }
}