Skip to content

Commit 6650234

Browse files
committed
[HttpFoundation] add HeaderBag::getFirst and HeaderBag::getAll
1 parent 80e28a0 commit 6650234

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/Symfony/Component/HttpFoundation/HeaderBag.php

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,23 +105,40 @@ public function add(array $headers)
105105
* @param string|null $default The default value
106106
* @param bool $first Whether to return the first value or all header values
107107
*
108-
* @return string|string[]|null The first header value or default value if $first is true, an array of values otherwise
108+
* @return string|string[]|int|null The first header value or default value if $first is true, an array of values otherwise
109109
*/
110110
public function get($key, $default = null, $first = true)
111+
{
112+
@trigger_error(sprintf('%s::%s is deprecated since Symfony 4.4, use %s::getFirst() or %s::getAll() instead.', __CLASS__, __METHOD__, __CLASS__, __CLASS__), E_USER_DEPRECATED);
113+
if (true === $first) {
114+
return $this->getFirst($key, $default);
115+
}
116+
117+
return $this->getAll($key, $default);
118+
}
119+
120+
public function getFirst($key, $default = null)
121+
{
122+
$all = $this->getAll($key, $default);
123+
124+
if (\count($all)) {
125+
return isset($all[0]) ? $all[0] : null;
126+
}
127+
128+
return $default;
129+
}
130+
131+
public function getAll($key, $default = null): array
111132
{
112133
$key = str_replace('_', '-', strtolower($key));
113134
$headers = $this->all();
114135

115136
if (!\array_key_exists($key, $headers)) {
116137
if (null === $default) {
117-
return $first ? null : [];
138+
return [];
118139
}
119140

120-
return $first ? $default : [$default];
121-
}
122-
123-
if ($first) {
124-
return \count($headers[$key]) ? $headers[$key][0] : $default;
141+
return [$default];
125142
}
126143

127144
return $headers[$key];

src/Symfony/Component/HttpFoundation/Tests/HeaderBagTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,15 @@ public function testGet()
9393
// defaults
9494
$this->assertNull($bag->get('none'), '->get unknown values returns null');
9595
$this->assertEquals('default', $bag->get('none', 'default'), '->get unknown values returns default');
96+
$this->assertEquals($bag->getFirst('none', 'default'), $bag->get('none', 'default'), '->get unknown values returns default as array');
97+
9698
$this->assertEquals(['default'], $bag->get('none', 'default', false), '->get unknown values returns default as array');
99+
$this->assertEquals($bag->getAll('none', 'default'), $bag->get('none', 'default', false), '->get unknown values returns default as array');
97100

98101
$bag->set('foo', 'bor', false);
99102
$this->assertEquals('bar', $bag->get('foo'), '->get return first value');
103+
$this->assertEquals($bag->getAll('foo', 'nope'), $bag->get('foo', 'nope', false), '->get return all values as array');
104+
100105
$this->assertEquals(['bar', 'bor'], $bag->get('foo', 'nope', false), '->get return all values as array');
101106
}
102107

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy