You are here

InfoParserDynamic.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 core/lib/Drupal/Core/Extension/InfoParserDynamic.php

File

core/lib/Drupal/Core/Extension/InfoParserDynamic.php
View source
<?php

/**
 * @file
 * Contains \Drupal\Core\Extension\InfoParserDynamic.
 */
namespace Drupal\Core\Extension;

use Drupal\Component\Serialization\Yaml;
use Drupal\Component\Serialization\Exception\InvalidDataTypeException;

/**
 * Parses dynamic .info.yml files that might change during the page request.
 */
class InfoParserDynamic implements InfoParserInterface {

  /**
   * {@inheritdoc}
   */
  public function parse($filename) {
    if (!file_exists($filename)) {
      $parsed_info = array();
    }
    else {
      try {
        $parsed_info = Yaml::decode(file_get_contents($filename));
      } catch (InvalidDataTypeException $e) {
        throw new InfoParserException("Unable to parse {$filename} " . $e
          ->getMessage());
      }
      $missing_keys = array_diff($this
        ->getRequiredKeys(), array_keys($parsed_info));
      if (!empty($missing_keys)) {
        throw new InfoParserException('Missing required keys (' . implode(', ', $missing_keys) . ') in ' . $filename);
      }
      if (isset($parsed_info['version']) && $parsed_info['version'] === 'VERSION') {
        $parsed_info['version'] = \Drupal::VERSION;
      }
    }
    return $parsed_info;
  }

  /**
   * Returns an array of keys required to exist in .info.yml file.
   *
   * @return array
   *   An array of required keys.
   */
  protected function getRequiredKeys() {
    return array(
      'type',
      'core',
      'name',
    );
  }

}

Classes

Namesort descending Description
InfoParserDynamic Parses dynamic .info.yml files that might change during the page request.