HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/files.wb-cloud.nl/public_html/core/Command/Config/System/CastHelper.php
<?php

declare(strict_types=1);
/**
 * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

namespace OC\Core\Command\Config\System;

class CastHelper {
	/**
	 * @return array{value: mixed, readable-value: string}
	 */
	public function castValue(?string $value, string $type): array {
		switch ($type) {
			case 'integer':
			case 'int':
				if (!is_numeric($value)) {
					throw new \InvalidArgumentException('Non-numeric value specified');
				}
				return [
					'value' => (int)$value,
					'readable-value' => 'integer ' . (int)$value,
				];

			case 'double':
			case 'float':
				if (!is_numeric($value)) {
					throw new \InvalidArgumentException('Non-numeric value specified');
				}
				return [
					'value' => (float)$value,
					'readable-value' => 'double ' . (float)$value,
				];

			case 'boolean':
			case 'bool':
				$value = strtolower($value);
				return match ($value) {
					'true' => [
						'value' => true,
						'readable-value' => 'boolean ' . $value,
					],
					'false' => [
						'value' => false,
						'readable-value' => 'boolean ' . $value,
					],
					default => throw new \InvalidArgumentException('Unable to parse value as boolean'),
				};

			case 'null':
				return [
					'value' => null,
					'readable-value' => 'null',
				];

			case 'string':
				$value = (string)$value;
				return [
					'value' => $value,
					'readable-value' => ($value === '') ? 'empty string' : 'string ' . $value,
				];

			case 'json':
				$value = json_decode($value, true);
				return [
					'value' => $value,
					'readable-value' => 'json ' . json_encode($value),
				];

			default:
				throw new \InvalidArgumentException('Invalid type');
		}
	}
}