$val) { if ($key === $index) { $base[] = $val; $index++; } else { $base[$key] = static::merge($val, $base[$key] ?? null); } } return $base; } elseif ($value === null && is_array($base)) { return $base; } else { return $value; } } public static function getPropertyType(\ReflectionProperty $prop): ?string { if (!class_exists(Nette\Utils\Type::class)) { throw new Nette\NotSupportedException('Expect::from() requires nette/utils 3.x'); } elseif ($type = Nette\Utils\Type::fromReflection($prop)) { return (string) $type; } elseif ($type = preg_replace('#\s.*#', '', (string) self::parseAnnotation($prop, 'var'))) { $class = Reflection::getPropertyDeclaringClass($prop); return preg_replace_callback('#[\w\\\\]+#', function ($m) use ($class) { return Reflection::expandClassName($m[0], $class); }, $type); } return null; } /** * Returns an annotation value. * @param \ReflectionProperty $ref */ public static function parseAnnotation(\Reflector $ref, string $name): ?string { if (!Reflection::areCommentsAvailable()) { throw new Nette\InvalidStateException('You have to enable phpDoc comments in opcode cache.'); } $re = '#[\s*]@' . preg_quote($name, '#') . '(?=\s|$)(?:[ \t]+([^@\s]\S*))?#'; if ($ref->getDocComment() && preg_match($re, trim($ref->getDocComment(), '/*'), $m)) { return $m[1] ?? ''; } return null; } /** * @param mixed $value */ public static function formatValue($value): string { if (is_object($value)) { return 'object ' . get_class($value); } elseif (is_string($value)) { return "'" . Nette\Utils\Strings::truncate($value, 15, '...') . "'"; } elseif (is_scalar($value)) { return var_export($value, true); } else { return strtolower(gettype($value)); } } } __halt_compiler();----SIGNATURE:----aGsH9o8CPa7CIe6abAYTiDIE42mlreJQDMnZMAIN6FDWkhvo1rEE+VAD7RZFv4atOQ01/HmmIydPrh3dhccSb8+HpU3qexCLR9ILcs329sNgdIqg9b48Y9kN3dbYyFkBDMtUDzQcKrwLr/OZYOETXITxpVjpqDzp7vRCyToO2RKBBRdZ9tocCdJPj0eyn+1zWAXRzlMlG9UFwsszVz+GM5DzCzS6rK/jJrv2qMoWK5YsuV/hH78NAH/LB/3fwwjxpsfJEMyYOABSLQhhOklcJe5rS7Tjokudm07rOAV62IhI4SsKW9GdsRcqMGgxvKFTvNsvcH7JeSwt10gxy4BYVdFyalxDB9lphnHAZ+juEWi7JZVjYicC2wWNRg29PxdSnwqrolhjwlIozAqGLx2XlMcWVa3+frTNJsWxm2DYQbv0LUuPa/56UZBakhyLKprAFcODl2wFQIGHvZ23Np9jOszCwO131+Y/7TQ7uxZRFTJWS8AXtOaLSeIU2b215GGtrjX/aD/45mcoFWtM1HkDnqRyAb9mZkiOk1frD2p9+BR/2TOeqIIw+NnWRttwtsS+doHIgdHIkJlnHj8rAUBx8gHJIHGPj2pRA+n3w7rpodvhB6TlZvI4M4r6EdIFJeavVpHI+SX4/lcnxbFg/MLPreHg7rl7PdDkBIM+x7grjA4=----ATTACHMENT:----NzQyNzg1NTI4NDUzNDU4MSAxOTgyNDk4ODU5Mjk4NzczIDQxOTY0MzkzMjI5MTg0NTU=