Skip to content

Commit 68b9adb

Browse files
committed
refactor: use superglobals service in the UserAgent class
1 parent abe5d1c commit 68b9adb

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

system/HTTP/UserAgent.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,10 @@ public function __construct(?UserAgents $config = null)
109109
{
110110
$this->config = $config ?? config(UserAgents::class);
111111

112-
if (isset($_SERVER['HTTP_USER_AGENT'])) {
113-
$this->agent = trim($_SERVER['HTTP_USER_AGENT']);
112+
$userAgent = service('superglobals')->server('HTTP_USER_AGENT');
113+
114+
if ($userAgent !== null) {
115+
$this->agent = trim($userAgent);
114116
$this->compileData();
115117
}
116118
}
@@ -175,10 +177,11 @@ public function isMobile(?string $key = null): bool
175177
public function isReferral(): bool
176178
{
177179
if (! isset($this->referrer)) {
178-
if (empty($_SERVER['HTTP_REFERER'])) {
180+
$referer = service('superglobals')->server('HTTP_REFERER');
181+
if ($referer === null || $referer === '') {
179182
$this->referrer = false;
180183
} else {
181-
$refererHost = @parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
184+
$refererHost = @parse_url($referer, PHP_URL_HOST);
182185
$ownHost = parse_url(\base_url(), PHP_URL_HOST);
183186

184187
$this->referrer = ($refererHost && $refererHost !== $ownHost);
@@ -241,7 +244,8 @@ public function getMobile(): string
241244
*/
242245
public function getReferrer(): string
243246
{
244-
return empty($_SERVER['HTTP_REFERER']) ? '' : trim($_SERVER['HTTP_REFERER']);
247+
$referrer = service('superglobals')->server('HTTP_REFERER');
248+
return $referrer === null ? '' : trim($referrer);
245249
}
246250

247251
/**

tests/system/HTTP/UserAgentTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,16 @@ protected function setUp(): void
3131
parent::setUp();
3232

3333
// set a baseline user agent
34-
$_SERVER['HTTP_USER_AGENT'] = $this->_user_agent;
34+
service('superglobals')->setServer('HTTP_USER_AGENT', $this->_user_agent);
3535

3636
$this->agent = new UserAgent();
3737
}
3838

3939
public function testMobile(): void
4040
{
4141
// Mobile Not Set
42-
$_SERVER['HTTP_USER_AGENT'] = $this->_mobile_ua;
42+
service('superglobals')->setServer('HTTP_USER_AGENT', $this->_mobile_ua);
4343
$this->assertFalse($this->agent->isMobile());
44-
unset($_SERVER['HTTP_USER_AGENT']);
4544
}
4645

4746
public function testIsFunctions(): void
@@ -55,12 +54,13 @@ public function testIsFunctions(): void
5554

5655
public function testReferrer(): void
5756
{
58-
$_SERVER['HTTP_REFERER'] = 'http://codeigniter.com/user_guide/';
57+
service('superglobals')->setServer('HTTP_REFERER', 'http://codeigniter.com/user_guide/');
58+
5959
$this->assertTrue($this->agent->isReferral());
6060
$this->assertSame('http://codeigniter.com/user_guide/', $this->agent->getReferrer());
6161

6262
$this->setPrivateProperty($this->agent, 'referrer', null);
63-
unset($_SERVER['HTTP_REFERER']);
63+
service('superglobals')->setServer('HTTP_REFERER', '');
6464
$this->assertFalse($this->agent->isReferral());
6565
$this->assertSame('', $this->agent->getReferrer());
6666
}
@@ -108,7 +108,7 @@ public function testParseBot(): void
108108

109109
public function testEmptyUserAgentVariable(): void
110110
{
111-
unset($_SERVER['HTTP_USER_AGENT']);
111+
service('superglobals')->setServer('HTTP_USER_AGENT', '');
112112
$agent = new UserAgent();
113113
$this->assertEmpty((string) $agent);
114114
}

0 commit comments

Comments
 (0)