$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:----ThiqJAEisYOv0EGaa6jSRP4oT+K41AN98VuPo5rwFqk9kQVKeHF1J0rjSegKnqHSwq3PnRFNtaOSfU9yxFvdNxB6OVC1PCV4kZ7rV8S7znA00U0tVZ1f5YxYjupZgUDKO1yffNYntMCi3ma+XlCj7weJWN/7eSpXL7dqBXQ/t6ONOvzPAEcaithAVIiSFxj7NbrP2jszZ9DVewX5uOy8ZeF3SBbs7r51RTzxrjYG6GSaUTFDIe1Ou479DyYO0EkwK9j67KRIG0uXH1w3/NdSFjy5qfAKLkAn9QZCdzBjdf4f5jrQiB22aLP4H0CActQXtP8ol/SDJBh80f5yVkzlPCMy4AkffbOgcVhlVVGLAsES24j0yap5qeWpGN6ywDehd6/oxe6F/qglIVAisOYtEBHWXiug8oaGld+0Tj0evH4ySakY4aXyUsK694df6xL9+fKaK9FihrwQilep8PFksWKztoBWbnHgRX8JXefI8KM2wfJEm9ZcYom7evoaWmQvsDpGFpMhJYh1ew03seMohco4bBAeMBi3vxAiMyBjW6KH8FDWgKe3za0G4MugFTM7lEXLT7YYn1IPTbmsrdknQNlgUSXyYYVCN+LNyBlqVDieL1gfSa71cjClhYmVc4PHjJOaAK5QmOR2sxk5VlsVSZtbI996DRTKVerqP+Rz/EA=----ATTACHMENT:----OTYxOTYyOTU3MTQ1ODYyNyA0NDAyNjc3NDM1ODgyMTczIDE0MzY5MTg3MjUwMTA1MjQ=