• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mimmi20 / browser-detector / 12915563542

22 Jan 2025 07:24PM UTC coverage: 89.212% (-10.8%) from 100.0%
12915563542

push

github

web-flow
Merge pull request #872 from mimmi20/updates

rewrite Headers

2983 of 3466 new or added lines in 72 files covered. (86.06%)

9 existing lines in 2 files now uncovered.

4234 of 4746 relevant lines covered (89.21%)

11.89 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Loader/InitData/Os.php
1
<?php
2

3
/**
4
 * This file is part of the browser-detector package.
5
 *
6
 * Copyright (c) 2012-2025, Thomas Mueller <mimmi20@live.de>
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
declare(strict_types = 1);
13

14
namespace BrowserDetector\Loader\InitData;
15

16
use stdClass;
17

18
use function array_change_key_case;
19
use function array_key_exists;
20
use function is_array;
21
use function is_string;
22

23
use const CASE_LOWER;
24

25
/** @phpcs:disable SlevomatCodingStandard.Classes.RequireConstructorPropertyPromotion.RequiredConstructorPropertyPromotion */
26
final class Os
27
{
28
    private string | null $name               = null;
29
    private string | null $marketingName      = null;
30
    private string | null $manufacturer       = null;
31
    private string | stdClass | null $version = null;
32

33
    /** @throws void */
NEW
34
    public function __construct(
×
35
        string | null $name,
36
        string | null $marketingName,
37
        string | null $manufacturer,
38
        string | stdClass | null $version,
39
    ) {
NEW
40
        $this->name          = $name;
×
NEW
41
        $this->marketingName = $marketingName;
×
NEW
42
        $this->manufacturer  = $manufacturer;
×
NEW
43
        $this->version       = $version;
×
44
    }
45

46
    /**
47
     * @param stdClass $data
48
     * @phpstan-param array{name: string|null, marketingName: string|null, manufacturer: string|null, version: string|array<string|mixed>|stdClass|null} $data
49
     *
50
     * @throws void
51
     */
NEW
52
    public function __unserialize(array $data): void
×
53
    {
NEW
54
        $this->exchangeArray($data);
×
55
    }
56

57
    /**
58
     * @return array{name: string|null, marketingName: string|null, manufacturer: string|null, version: stdClass|string|null}
59
     *
60
     * @throws void
61
     */
NEW
62
    public function __serialize(): array
×
63
    {
NEW
64
        return $this->getArrayCopy();
×
65
    }
66

67
    /** @throws void */
NEW
68
    public function getName(): string | null
×
69
    {
NEW
70
        return $this->name;
×
71
    }
72

73
    /** @throws void */
NEW
74
    public function getMarketingName(): string | null
×
75
    {
NEW
76
        return $this->marketingName;
×
77
    }
78

79
    /** @throws void */
NEW
80
    public function getManufacturer(): string | null
×
81
    {
NEW
82
        return $this->manufacturer;
×
83
    }
84

85
    /** @throws void */
NEW
86
    public function getVersion(): string | stdClass | null
×
87
    {
NEW
88
        return $this->version;
×
89
    }
90

91
    /**
92
     * @return array{name: string|null, marketingName: string|null, manufacturer: string|null, version: stdClass|string|null}
93
     *
94
     * @throws void
95
     *
96
     * @api
97
     */
NEW
98
    public function getArrayCopy(): array
×
99
    {
NEW
100
        return [
×
NEW
101
            'name' => $this->name,
×
NEW
102
            'marketingName' => $this->marketingName,
×
NEW
103
            'manufacturer' => $this->manufacturer,
×
NEW
104
            'version' => $this->version,
×
NEW
105
        ];
×
106
    }
107

108
    /**
109
     * @param stdClass $data
110
     * @phpstan-param array{name: string|null, marketingName: string|null, manufacturer: string|null, version: string|array<string|mixed>|stdClass|null} $data
111
     *
112
     * @throws void
113
     *
114
     * @api
115
     */
NEW
116
    public function exchangeArray(array $data): void
×
117
    {
NEW
118
        $data = array_change_key_case($data, CASE_LOWER);
×
119

NEW
120
        $name = null;
×
121

NEW
122
        if (array_key_exists('name', $data) && is_string($data['name'])) {
×
NEW
123
            $name = $data['name'];
×
124
        }
125

NEW
126
        $marketingName = null;
×
127

NEW
128
        if (array_key_exists('marketingname', $data) && is_string($data['marketingname'])) {
×
NEW
129
            $marketingName = $data['marketingname'];
×
130
        }
131

NEW
132
        $manufacturer = null;
×
133

NEW
134
        if (array_key_exists('manufacturer', $data) && is_string($data['manufacturer'])) {
×
NEW
135
            $manufacturer = $data['manufacturer'];
×
136
        }
137

NEW
138
        $version = null;
×
139

NEW
140
        if (array_key_exists('version', $data)) {
×
NEW
141
            if (is_string($data['version']) || $data['version'] instanceof stdClass) {
×
NEW
142
                $version = $data['version'];
×
NEW
143
            } elseif (is_array($data['version'])) {
×
NEW
144
                $version = (object) $data['version'];
×
145
            }
146
        }
147

NEW
148
        $this->name          = $name;
×
NEW
149
        $this->marketingName = $marketingName;
×
NEW
150
        $this->manufacturer  = $manufacturer;
×
NEW
151
        $this->version       = $version;
×
152
    }
153
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc