Fix bug in style changes for the Use cases on the live site.
[yaffs-website] / vendor / symfony / browser-kit / Response.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\BrowserKit;
13
14 /**
15  * Response object.
16  *
17  * @author Fabien Potencier <fabien@symfony.com>
18  */
19 class Response
20 {
21     protected $content;
22     protected $status;
23     protected $headers;
24
25     /**
26      * Constructor.
27      *
28      * The headers array is a set of key/value pairs. If a header is present multiple times
29      * then the value is an array of all the values.
30      *
31      * @param string $content The content of the response
32      * @param int    $status  The response status code
33      * @param array  $headers An array of headers
34      */
35     public function __construct($content = '', $status = 200, array $headers = array())
36     {
37         $this->content = $content;
38         $this->status = $status;
39         $this->headers = $headers;
40     }
41
42     /**
43      * Converts the response object to string containing all headers and the response content.
44      *
45      * @return string The response with headers and content
46      */
47     public function __toString()
48     {
49         $headers = '';
50         foreach ($this->headers as $name => $value) {
51             if (is_string($value)) {
52                 $headers .= $this->buildHeader($name, $value);
53             } else {
54                 foreach ($value as $headerValue) {
55                     $headers .= $this->buildHeader($name, $headerValue);
56                 }
57             }
58         }
59
60         return $headers."\n".$this->content;
61     }
62
63     /**
64      * Returns the build header line.
65      *
66      * @param string $name  The header name
67      * @param string $value The header value
68      *
69      * @return string The built header line
70      */
71     protected function buildHeader($name, $value)
72     {
73         return sprintf("%s: %s\n", $name, $value);
74     }
75
76     /**
77      * Gets the response content.
78      *
79      * @return string The response content
80      */
81     public function getContent()
82     {
83         return $this->content;
84     }
85
86     /**
87      * Gets the response status code.
88      *
89      * @return int The response status code
90      */
91     public function getStatus()
92     {
93         return $this->status;
94     }
95
96     /**
97      * Gets the response headers.
98      *
99      * @return array The response headers
100      */
101     public function getHeaders()
102     {
103         return $this->headers;
104     }
105
106     /**
107      * Gets a response header.
108      *
109      * @param string $header The header name
110      * @param bool   $first  Whether to return the first value or all header values
111      *
112      * @return string|array The first header value if $first is true, an array of values otherwise
113      */
114     public function getHeader($header, $first = true)
115     {
116         $normalizedHeader = str_replace('-', '_', strtolower($header));
117         foreach ($this->headers as $key => $value) {
118             if (str_replace('-', '_', strtolower($key)) === $normalizedHeader) {
119                 if ($first) {
120                     return is_array($value) ? (count($value) ? $value[0] : '') : $value;
121                 }
122
123                 return is_array($value) ? $value : array($value);
124             }
125         }
126
127         return $first ? null : array();
128     }
129 }