function Variable::export

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Component/Utility/Variable.php \Drupal\Component\Utility\Variable::export()
  2. 8.9.x core/lib/Drupal/Component/Utility/Variable.php \Drupal\Component\Utility\Variable::export()
  3. 10 core/lib/Drupal/Component/Utility/Variable.php \Drupal\Component\Utility\Variable::export()

Drupal-friendly var_export().

Parameters

mixed $var: The variable to export.

string $prefix: A prefix that will be added at the beginning of every lines of the output.

Return value

string The variable exported in a way compatible to Drupal's coding standards.

5 calls to Variable::export()
DbDumpCommand::getTableScript in core/lib/Drupal/Core/Command/DbDumpCommand.php
The part of the script for each table.
Extract::transform in core/modules/migrate/src/Plugin/migrate/process/Extract.php
Performs the associated process.
StaticMap::transform in core/modules/migrate/src/Plugin/migrate/process/StaticMap.php
Performs the associated process.
StaticMapTest::testMapWithInvalidSource in core/modules/migrate/tests/src/Unit/process/StaticMapTest.php
Tests when the source is invalid.
VariableTest::testExport in core/tests/Drupal/Tests/Component/Utility/VariableTest.php
Tests exporting variables.

File

core/lib/Drupal/Component/Utility/Variable.php, line 50

Class

Variable
Provides helpers for dealing with variables.

Namespace

Drupal\Component\Utility

Code

public static function export($var, $prefix = '') {
    if (is_array($var)) {
        if (empty($var)) {
            $output = 'array()';
        }
        else {
            $output = "array(\n";
            // Don't export keys if the array is non associative.
            $export_keys = array_values($var) != $var;
            foreach ($var as $key => $value) {
                $output .= '  ' . ($export_keys ? static::export($key) . ' => ' : '') . static::export($value, '  ') . ",\n";
            }
            $output .= ')';
        }
    }
    elseif (is_bool($var)) {
        $output = $var ? 'TRUE' : 'FALSE';
    }
    elseif (is_string($var)) {
        if (str_contains($var, "\n") || str_contains($var, "'")) {
            // If the string contains a line break or a single quote, use the
            // double quote export mode. Encode backslash, dollar symbols, and
            // double quotes and transform some common control characters.
            $var = str_replace([
                '\\',
                '$',
                '"',
                "\n",
                "\r",
                "\t",
            ], [
                '\\\\',
                '\\$',
                '\\"',
                '\\n',
                '\\r',
                '\\t',
            ], $var);
            $output = '"' . $var . '"';
        }
        else {
            $output = "'" . $var . "'";
        }
    }
    elseif (is_object($var) && get_class($var) === 'stdClass') {
        // var_export() will export stdClass objects using an undefined
        // magic method __set_state() leaving the export broken. This
        // workaround avoids this by casting the object as an array for
        // export and casting it back to an object when evaluated.
        $output = '(object) ' . static::export((array) $var, $prefix);
    }
    else {
        $output = var_export($var, TRUE);
    }
    if ($prefix) {
        $output = str_replace("\n", "\n{$prefix}", $output);
    }
    return $output;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.