/** * @param array $data * @return Property */ public static function factory(array $data = array()) { $property = new self(); $property->setName(self::stockProperty($data, SchemaEnum::NAME)); $property->setDescription(self::stockProperty($data, SchemaEnum::DESCRIPTION)); $property->setType(self::stockProperty($data, SchemaEnum::TYPE)); $property->setEnum(self::stockProperty($data, SchemaEnum::ENUM)); $property->setPattern(self::stockProperty($data, SchemaEnum::PATTERN)); if (isset($data[SchemaEnum::ITEMS])) { // handle sub-schemas $property->setItems($data[SchemaEnum::ITEMS]); } return $property; }