http

Форк
0
/
Response.php 
72 строки · 1.4 Кб
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Upside\Http;
6

7
class Response
8
{
9
    private string $content;
10
    private Status $status;
11

12
    /**
13
     * @var array<string, string>
14
     */
15
    private array $headers;
16
    private string $version = '1.0';
17

18
    /**
19
     * @param array<string, string> $headers
20
     */
21
    public function __construct(string $content = '', Status $status = Status::OK, array $headers = [])
22
    {
23
        $this->content = $content;
24
        $this->status = $status;
25
        $this->headers = $headers;
26
    }
27

28
    public function send(): static
29
    {
30
        $this
31
            ->send_headers()
32
            ->send_content();
33

34
        return $this;
35
    }
36

37
    private function send_headers(): static
38
    {
39
        if (\headers_sent()) {
40
            return $this;
41
        }
42

43
        foreach ($this->headers as $name => $value) {
44
            \header($name . ': ' . $value, true, $this->status->code());
45
        }
46

47
        \header(\sprintf('HTTP/%s %s %s', $this->version, $this->status->code(), $this->status->text()), true, $this->status->code());
48

49
        return $this;
50
    }
51

52
    private function send_content(): static
53
    {
54
        echo $this->content;
55

56
        return $this;
57
    }
58

59
    public function set_status(Status $status): static
60
    {
61
        $this->status = $status;
62

63
        return $this;
64
    }
65

66
    public function set_version(string $version): static
67
    {
68
        $this->version = $version;
69

70
        return $this;
71
    }
72
}
73

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.