PHPDaemon\HTTPRequest\Generic::header PHP Method

header() public method

Send the header
public header ( string $s, boolean $replace = true, integer $code = false ) : boolean
$s string Header. Example: 'Location: http://php.net/'
$replace boolean Optional. Replace?
$code integer Optional. HTTP response code
return boolean Success
    public function header($s, $replace = true, $code = false)
    {
        if (!$code) {
            $this->status($code);
        }
        if ($this->headers_sent) {
            throw new RequestHeadersAlreadySent();
        }
        $s = strtr($s, "\r\n", '  ');
        $e = explode(':', $s, 2);
        if (!isset($e[1])) {
            $e[0] = 'STATUS';
            if (strncmp($s, 'HTTP/', 5) === 0) {
                $s = substr($s, 9);
            }
        }
        $k = strtr(strtoupper($e[0]), Generic::$htr);
        if ($k === 'CONTENT_TYPE') {
            self::parseStr(strtolower($e[1]), $ctype, true);
            if (!isset($ctype['charset'])) {
                $ctype['charset'] = $this->upstream->pool->config->defaultcharset->value;
                $s = $e[0] . ': ';
                $i = 0;
                foreach ($ctype as $k => $v) {
                    $s .= ($i > 0 ? '; ' : '') . $k . ($v !== '' ? '=' . $v : '');
                    ++$i;
                }
            }
        }
        if ($k === 'SET_COOKIE') {
            $k .= '_' . ++$this->cookieNum;
        } elseif (!$replace && isset($this->headers[$k])) {
            return false;
        }
        $this->headers[$k] = $s;
        if ($k === 'CONTENT_LENGTH') {
            $this->contentLength = (int) $e[1];
        } elseif ($k === 'LOCATION') {
            $this->status(301);
        }
        if (Daemon::$compatMode) {
            is_callable('header_native') ? header_native($s) : header($s);
        }
        return true;
    }