Classes   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 130
Duplicated Lines 0 %

Test Coverage

Coverage 37.5%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 101
dl 0
loc 130
rs 10
c 1
b 0
f 0
ccs 3
cts 8
cp 0.375

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getClass() 0 7 2
A win32ClassFromPHPClass() 0 9 2
1
<?php
2
3
namespace PhpWinTools\WmiScripting\Models;
4
5
abstract class Classes
6
{
7
    /**
8
     * Computer System Hardware Classes.
9
     *
10
     * @link https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/computer-system-hardware-classes
11
     */
12
    const BIOS = 'Win32_BIOS';
13
    const BUS = 'Win32_Bus';
14
    const CACHE_MEMORY = 'Win32_CacheMemory';
15
    const COMPUTER_SYSTEM_PROCESSOR = 'Win32_ComputerSystemProcessor';
16
    const CURRENT_PROBE = 'Win32_CurrentProbe';
17
    const DESKTOP_MONITOR = 'Win32_DesktopMonitor';
18
    const DISK_DRIVE = 'Win32_DiskDrive';
19
    const DISK_PARTITION = 'Win32_DiskPartition';
20
    const FAN = 'Win32_Fan';
21
    const IDE_CONTROLLER = 'Win32_IDEController';
22
    const KEYBOARD = 'Win32_Keyboard';
23
    const LOGICAL_DISK = 'Win32_LogicalDisk';
24
    const LOGICAL_PROGRAM_GROUP = 'Win32_LogicalProgramGroup';
25
    const LOGICAL_PROGRAM_GROUP_ITEM = 'Win32_LogicalProgramGroupItem';
26
    const MAPPED_LOGICAL_DISK = 'Win32_MappedLogicalDisk';
27
    const MEMORY_ARRAY = 'Win32_MemoryArray';
28
    const MEMORY_DEVICE = 'Win32_MemoryDevice';
29
    const MOTHERBOARD_DEVICE = 'Win32_MotherboardDevice';
30
    const NETWORK_ADAPTER = 'Win32_NetworkAdapter';
31
    const PNP_ENTITY = 'Win32_PnPEntity';
32
    const POINTING_DEVICE = 'Win32_PointingDevice';
33
    const PRINTER = 'Win32_Printer';
34
    const PROCESSOR = 'Win32_Processor';
35
    const SCSI_CONTROLLER = 'Win32_SCSIController';
36
    const SERIAL_PORT = 'Win32_SerialPort';
37
    const SMBIOS_MEMORY = 'Win32_SMBIOSMemory';
38
    const SOUND_DEVICE = 'Win32_SoundDevice';
39
    const TEMPERATURE_PROBE = 'Win32_TemperatureProbe';
40
    const USB_CONTROLLER = 'Win32_USBController';
41
    const USB_HUB = 'Win32_USBHub';
42
    const VIDEO_CONTROLLER = 'Win32_VideoController';
43
    const VOLTAGE_SENSOR = 'Win32_VoltageProbe';
44
    const VOLUME = 'Win32_Volume';
45
46
    /**
47
     * Operating System Classes.
48
     *
49
     * @link https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/operating-system-classes
50
     */
51
    const ACCOUNT = 'Win32_Account';
52
    const COMPUTER_SYSTEM = 'Win32_ComputerSystem';
53
    const GROUP = 'Win32_Group';
54
    const LOGGED_ON_USER = 'Win32_LoggedOnUser';
55
    const LOGON_SESSION = 'Win32_LogonSession';
56
    const OPERATING_SYSTEM = 'Win32_OperatingSystem';
57
    const PROCESS = 'Win32_Process';
58
    const PROGRAM_GROUP_CONTENTS = 'Win32_ProgramGroupContents';
59
    const PROGRAM_GROUP_OR_ITEM = 'Win32_ProgramGroupOrItem';
60
    const SYSTEM_BIOS = 'Win32_SystemBIOS';
61
    const SYSTEM_DEVICES = 'Win32_SystemDevices';
62
    const SYSTEM_PARTITIONS = 'Win32_SystemPartitions';
63
    const USER_ACCOUNT = 'Win32_UserAccount';
64
65
    const CLASS_MAP = [
66
        /* Computer System Hardware Classes */
67
        self::BIOS                          => Bios::class,
68
        self::BUS                           => Bus::class,
69
        self::CACHE_MEMORY                  => CacheMemory::class,
70
        self::COMPUTER_SYSTEM_PROCESSOR     => ComputerSystemProcessor::class,
71
        self::CURRENT_PROBE                 => CurrentProbe::class,
72
        self::DESKTOP_MONITOR               => DesktopMonitor::class,
73
        self::DISK_DRIVE                    => DiskDrive::class,
74
        self::DISK_PARTITION                => DiskPartition::class,
75
        self::FAN                           => Fan::class,
76
        self::IDE_CONTROLLER                => IDEController::class,
77
        self::KEYBOARD                      => Keyboard::class,
78
        self::LOGICAL_DISK                  => LogicalDisk::class,
79
        self::LOGICAL_PROGRAM_GROUP         => LogicalProgramGroup::class,
80
        self::LOGICAL_PROGRAM_GROUP_ITEM    => LogicalProgramGroupItem::class,
81
        self::MAPPED_LOGICAL_DISK           => MappedLogicalDisk::class,
82
        self::MEMORY_DEVICE                 => MemoryDevice::class,
83
        self::MEMORY_ARRAY                  => MemoryArray::class,
84
        self::MOTHERBOARD_DEVICE            => MotherboardDevice::class,
85
        self::NETWORK_ADAPTER               => NetworkAdapter::class,
86
        self::PNP_ENTITY                    => PnPEntity::class,
87
        self::POINTING_DEVICE               => PointingDevice::class,
88
        self::PRINTER                       => Printer::class,
89
        self::PROCESSOR                     => Processor::class,
90
        self::SCSI_CONTROLLER               => SCSIController::class,
91
        self::SERIAL_PORT                   => SerialPort::class,
92
        self::SMBIOS_MEMORY                 => SMBIOSMemory::class,
93
        self::SOUND_DEVICE                  => SoundDevice::class,
94
        self::TEMPERATURE_PROBE             => TemperatureProbe::class,
95
        self::USB_CONTROLLER                => USBController::class,
96
        self::USB_HUB                       => USBHub::class,
97
        self::VIDEO_CONTROLLER              => VideoController::class,
98
        self::VOLTAGE_SENSOR                => VoltageProbe::class,
99
        self::VOLUME                        => Volume::class,
100
101
        /* Operating System Classes */
102
        self::ACCOUNT                       => Account::class,
103
        self::COMPUTER_SYSTEM               => ComputerSystem::class,
104
        self::GROUP                         => Group::class,
105
        self::LOGGED_ON_USER                => LoggedOnUser::class,
106
        self::LOGON_SESSION                 => LogonSession::class,
107
        self::PROCESS                       => Process::class,
108
        self::PROGRAM_GROUP_CONTENTS        => ProgramGroupContents::class,
109
        self::PROGRAM_GROUP_OR_ITEM         => ProgramGroupOrItem::class,
110
        self::OPERATING_SYSTEM              => OperatingSystem::class,
111
        self::SYSTEM_BIOS                   => SystemBios::class,
112
        self::SYSTEM_DEVICES                => SystemDevices::class,
113
        self::SYSTEM_PARTITIONS             => SystemPartitions::class,
114
        self::USER_ACCOUNT                  => UserAccount::class,
115
    ];
116
117
    public static function win32ClassFromPHPClass(string $class_name)
118
    {
119
        $win32_class = array_search($class_name, self::CLASS_MAP);
120
121
        if ($win32_class === false) {
122
            return Win32Model::class;
123
        }
124
125
        return $win32_class;
126
    }
127
128
    public static function getClass(string $classes_constant)
129
    {
130 2
        if (array_key_exists($classes_constant, self::CLASS_MAP)) {
131
            return self::CLASS_MAP[$classes_constant];
132 2
        }
133 2
134
        return Win32Model::class;
135
    }
136
}
137