public static function fromArray(array $items = []): Attribute
	{
		$obj = new static();

		$obj->setName($items[ 'name' ])
			->setDescription(
				isset($items[ 'description' ]) && is_string($items[ 'description' ]) ? $items[ 'description' ] : ''
			)
			->setSqlDescriptor(isset($items[ 'sqlDescriptor' ]) && is_string($items[ 'sqlDescriptor' ]) ? $items[ 'sqlDescriptor' ] : '')
			->setFormat(
				isset($items[ 'format' ]) && ($items[ 'format' ]) ? $items[ 'format' ] : '%s'
			)
			->setDataType(
				isset($items[ 'dataType' ]) && is_string($items[ 'dataType' ]) ? $items[ 'dataType' ] : 'string'
			);

		if (! isset($items[ 'dataType' ]) && isset($items[ 'type' ]) && is_string($items[ 'type' ])) {
			$obj->setDataType($items[ 'type' ]);
		}
		if (isset($items[ 'validateCallback' ]) && is_callable($items[ 'validateCallback' ])) {
			$obj->setValidateCallback($items[ 'validateCallback' ]);
		}
		if (isset($items[ 'sanitizeCallback' ]) && is_callable($items[ 'sanitizeCallback' ])) {
			$obj->setSanitizeCallback($items[ 'sanitizeCallback' ]);
		}

		if (isset($items[ 'required' ])) {
			$obj->setRequired((bool)$items[ 'required' ]);
		}

		return $obj;
	}