Raml\ApiDefinition::createFromArray PHP Method

createFromArray() public static method

Create a new API Definition from an array
public static createFromArray ( string $title, array $data = [] ) : ApiDefinition
$title string
$data array [ title: string version: ?string baseUrl: ?string baseUriParameters: ?array protocols: ?array defaultMediaType: ?string schemas: ?array securitySchemes: ?array documentation: ?array /* ]
return ApiDefinition
    public static function createFromArray($title, array $data = [])
    {
        $apiDefinition = new static($title);
        // --
        if (isset($data['version'])) {
            $apiDefinition->setVersion($data['version']);
        }
        if (isset($data['baseUrl'])) {
            $apiDefinition->setBaseUrl($data['baseUrl']);
        }
        // support for RAML 0.8
        if (isset($data['baseUri'])) {
            $apiDefinition->setBaseUrl($data['baseUri']);
        }
        if (isset($data['baseUriParameters'])) {
            foreach ($data['baseUriParameters'] as $key => $baseUriParameter) {
                $apiDefinition->addBaseUriParameter(BaseUriParameter::createFromArray($key, $baseUriParameter));
            }
        }
        if (isset($data['mediaType'])) {
            $apiDefinition->setDefaultMediaType($data['mediaType']);
        }
        if (isset($data['protocols'])) {
            foreach ($data['protocols'] as $protocol) {
                $apiDefinition->addProtocol($protocol);
            }
        }
        if (isset($data['defaultMediaType'])) {
            $apiDefinition->setDefaultMediaType($data['defaultMediaType']);
        }
        if (isset($data['schemas'])) {
            foreach ($data['schemas'] as $name => $schema) {
                $apiDefinition->addSchemaCollection($name, $schema);
            }
        }
        if (isset($data['securitySchemes'])) {
            foreach ($data['securitySchemes'] as $name => $securityScheme) {
                $apiDefinition->addSecurityScheme(SecurityScheme::createFromArray($name, $securityScheme));
            }
        }
        if (isset($data['securedBy'])) {
            foreach ($data['securedBy'] as $securedBy) {
                if ($securedBy) {
                    $apiDefinition->addSecuredBy($apiDefinition->getSecurityScheme($securedBy));
                } else {
                    $apiDefinition->addSecuredBy(SecurityScheme::createFromArray('null', [], $apiDefinition));
                }
            }
        }
        if (isset($data['documentation'])) {
            foreach ($data['documentation'] as $title => $documentation) {
                $apiDefinition->addDocumentation($title, $documentation);
            }
        }
        // ---
        foreach ($data as $resourceName => $resource) {
            // check if actually a resource
            if (strpos($resourceName, '/') === 0) {
                $apiDefinition->addResource(Resource::createFromArray($resourceName, $resource, $apiDefinition));
            }
        }
        return $apiDefinition;
    }

Usage Example

コード例 #1
0
ファイル: Parser.php プロジェクト: pies/php-raml-parser
 /**
  * Parse RAML data
  *
  * @param string $ramlData
  * @param string $rootDir
  *
  * @throws RamlParserException
  *
  * @return \Raml\ApiDefinition
  */
 private function parseRamlData($ramlData, $rootDir)
 {
     if (!isset($ramlData['title'])) {
         throw new RamlParserException();
     }
     $ramlData = $this->parseTraits($ramlData);
     $ramlData = $this->parseResourceTypes($ramlData);
     if ($this->configuration->isSchemaParsingEnabled()) {
         if (isset($ramlData['schemas'])) {
             $schemas = [];
             foreach ($ramlData['schemas'] as $schemaCollection) {
                 foreach ($schemaCollection as $schemaName => $schema) {
                     $schemas[$schemaName] = $schema;
                 }
             }
         }
         foreach ($ramlData as $key => $value) {
             if (0 === strpos($key, '/')) {
                 if (isset($schemas)) {
                     $value = $this->replaceSchemas($value, $schemas);
                 }
                 if (is_array($value)) {
                     $value = $this->recurseAndParseSchemas($value, $rootDir);
                 }
                 $ramlData[$key] = $value;
             }
         }
     }
     if (isset($ramlData['securitySchemes'])) {
         $ramlData['securitySchemes'] = $this->parseSecuritySettings($ramlData['securitySchemes']);
     }
     return ApiDefinition::createFromArray($ramlData['title'], $ramlData);
 }