class System in Schema 8
Provides schema information defined by modules in implementations of hook_schema().
Note that we specifically do not use drupal_get_schema() here, because it removes description keys which we want to keep so we can also detect changes on table and column comments during comparison. The downside is that we have to collect all schema information manually ourselves.
Plugin annotation
@SchemaProvider(id = "system")
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\schema\Plugin\Schema\System implements SchemaProviderInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of System
File
- src/
Plugin/ Schema/ System.php, line 24 - Contains Drupal\schema\Plugin\Schema\System.
Namespace
Drupal\schema\Plugin\SchemaView source
class System extends PluginBase implements SchemaProviderInterface {
const CACHE_BIN = 'schema_provider_system';
/**
* {@inheritdoc}
*/
public function get($rebuild = FALSE) {
//
static $schema;
if (!isset($schema) || $rebuild) {
// Try to load the schema from cache.
if (!$rebuild && ($cached = \Drupal::cache()
->get(self::CACHE_BIN))) {
$schema = $cached->data;
}
else {
$schema = array();
// Load the .install files to get hook_schema.
\Drupal::moduleHandler()
->loadAllIncludes('install');
require_once DRUPAL_ROOT . '/core/includes/common.inc';
// Invoke hook_schema for all modules.
foreach (\Drupal::moduleHandler()
->getImplementations('schema') as $module) {
// Cast the result of hook_schema() to an array, as a NULL return value
// would cause array_merge() to set the $schema variable to NULL as well.
// That would break modules which use $schema further down the line.
$current = (array) \Drupal::moduleHandler()
->invoke($module, 'schema');
// Set 'module' and 'name' keys for each table.
_drupal_schema_initialize($current, $module, FALSE);
$schema = array_merge($schema, $current);
}
\Drupal::moduleHandler()
->alter('schema', $schema);
// If the schema is empty, avoid saving it: some database engines require
// the schema to perform queries, and this could lead to infinite loops.
if (!empty($schema)) {
\Drupal::cache()
->set(self::CACHE_BIN, $schema, Cache::PERMANENT);
}
}
}
return $schema;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 92 |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
System:: |
constant | |||
System:: |
public | function |
Overrides SchemaProviderInterface:: |