Buckets:
| /** | |
| * This file is part of the Nette Framework (https://nette.org) | |
| * Copyright (c) 2004 David Grudl (https://davidgrudl.com) | |
| */ | |
| declare(strict_types=1); | |
| namespace Nette\Schema; | |
| use Nette; | |
| use Nette\Schema\Elements\AnyOf; | |
| use Nette\Schema\Elements\Structure; | |
| use Nette\Schema\Elements\Type; | |
| /** | |
| * Schema generator. | |
| * | |
| * @method static Type scalar($default = null) | |
| * @method static Type string($default = null) | |
| * @method static Type int($default = null) | |
| * @method static Type float($default = null) | |
| * @method static Type bool($default = null) | |
| * @method static Type null() | |
| * @method static Type list($default = []) | |
| * @method static Type mixed($default = null) | |
| * @method static Type email($default = null) | |
| * @method static Type unicode($default = null) | |
| */ | |
| final class Expect | |
| { | |
| public static function __callStatic(string $name, array $args): Type | |
| { | |
| $type = new Type($name); | |
| if ($args) { | |
| $type->default($args[0]); | |
| } | |
| return $type; | |
| } | |
| public static function type(string $type): Type | |
| { | |
| return new Type($type); | |
| } | |
| public static function anyOf(mixed ...$set): AnyOf | |
| { | |
| return new AnyOf(...$set); | |
| } | |
| /** | |
| * @param Schema[] $shape | |
| */ | |
| public static function structure(array $shape): Structure | |
| { | |
| return new Structure($shape); | |
| } | |
| public static function from(object $object, array $items = []): Structure | |
| { | |
| $ro = new \ReflectionObject($object); | |
| $props = $ro->hasMethod('__construct') | |
| ? $ro->getMethod('__construct')->getParameters() | |
| : $ro->getProperties(); | |
| foreach ($props as $prop) { | |
| $item = &$items[$prop->getName()]; | |
| if (!$item) { | |
| $type = Helpers::getPropertyType($prop) ?? 'mixed'; | |
| $item = new Type($type); | |
| if ($prop instanceof \ReflectionProperty ? $prop->isInitialized($object) : $prop->isOptional()) { | |
| $def = ($prop instanceof \ReflectionProperty ? $prop->getValue($object) : $prop->getDefaultValue()); | |
| if (is_object($def)) { | |
| $item = static::from($def); | |
| } elseif ($def === null && !Nette\Utils\Validators::is(null, $type)) { | |
| $item->required(); | |
| } else { | |
| $item->default($def); | |
| } | |
| } else { | |
| $item->required(); | |
| } | |
| } | |
| } | |
| return (new Structure($items))->castTo($ro->getName()); | |
| } | |
| /** | |
| * @param mixed[] $shape | |
| */ | |
| public static function array(?array $shape = []): Structure|Type | |
| { | |
| return Nette\Utils\Arrays::first($shape ?? []) instanceof Schema | |
| ? (new Structure($shape))->castTo('array') | |
| : (new Type('array'))->default($shape); | |
| } | |
| public static function arrayOf(string|Schema $valueType, string|Schema|null $keyType = null): Type | |
| { | |
| return (new Type('array'))->items($valueType, $keyType); | |
| } | |
| public static function listOf(string|Schema $type): Type | |
| { | |
| return (new Type('list'))->items($type); | |
| } | |
| } | |
Xet Storage Details
- Size:
- 2.77 kB
- Xet hash:
- 7ba0c07ec66c223e3934222a8fcf0fd21ad42dc48ebabd4e2cb8bcedc1b0ac99
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.