![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/brick/varexporter/src/ |
<?php declare(strict_types=1); namespace Brick\VarExporter; use Brick\VarExporter\Internal\GenericExporter; final class VarExporter { /** * Prepends the output with `return ` and append a semicolon and a newline. * This makes the code ready to be executed in a PHP fileāor `eval()`, for that matter. */ public const ADD_RETURN = 1 << 0; /** * Adds type hints to objects created through reflection, and to `$this` inside closures bound to an object. * This allows the resulting code to be statically analyzed by external tools and IDEs. */ public const ADD_TYPE_HINTS = 1 << 1; /** * Skips dynamic properties on custom classes in the output. By default, any dynamic property set on a custom class * is exported; if this flag is set, dynamic properties are only allowed on stdClass objects, and ignored on other * objects. */ public const SKIP_DYNAMIC_PROPERTIES = 1 << 2; /** * Disallows exporting objects through `__set_state()`. */ public const NO_SET_STATE = 1 << 3; /** * Disallows exporting objects through `__serialize()` and `__unserialize()`. */ public const NO_SERIALIZE = 1 << 4; /** * Disallows exporting plain objects using direct property access. */ public const NOT_ANY_OBJECT = 1 << 5; /** * Disallows exporting closures. */ public const NO_CLOSURES = 1 << 6; /** * Formats lists (0-based numeric arrays) containing only scalar values on a single line. * Types considered scalar here are int, bool, float, string and null. * This option is a subset of INLINE_ARRAY, and has no effect when INLINE_ARRAY is used. */ public const INLINE_SCALAR_LIST = 1 << 7; /** * @deprecated Please use INLINE_SCALAR_LIST instead. */ public const INLINE_NUMERIC_SCALAR_ARRAY = self::INLINE_SCALAR_LIST; /** * Export static vars defined via `use` as variables. */ public const CLOSURE_SNAPSHOT_USES = 1 << 8; /** * Add a trailing comma after the last item of non-inline arrays. */ public const TRAILING_COMMA_IN_ARRAY = 1 << 9; /** * Disallows exporting enums. */ public const NO_ENUMS = 1 << 10; /** * Formats all arrays on a single line. */ public const INLINE_ARRAY = 1 << 11; /** * @param mixed $var The variable to export. * @param int $options A bitmask of options. Possible values are `VarExporter::*` constants. * Combine multiple options with a bitwise OR `|` operator. * @param int $indentLevel The base output indentation level. * * @return string * * @throws ExportException */ public static function export($var, int $options = 0, int $indentLevel = 0) : string { $exporter = new GenericExporter($options, $indentLevel); $lines = $exporter->export($var, [], []); if ($indentLevel < 1 || count($lines) < 2) { $export = implode(PHP_EOL, $lines); } else { $firstLine = array_shift($lines); $lines = array_map( fn($line) => str_repeat(' ', $indentLevel) . $line, $lines, ); $export = $firstLine . PHP_EOL . implode(PHP_EOL, $lines); } if ($options & self::ADD_RETURN) { return 'return ' . $export . ';' . PHP_EOL; } return $export; } }