{"id":19387034,"url":"https://github.com/bermudaphp/var-export","last_synced_at":"2025-06-28T12:33:06.987Z","repository":{"id":65178195,"uuid":"585764724","full_name":"bermudaphp/var-export","owner":"bermudaphp","description":"PHP library for exporting variables to their string representation with advanced formatting options and closure support.","archived":false,"fork":false,"pushed_at":"2025-06-13T05:53:52.000Z","size":79,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-13T06:40:41.654Z","etag":null,"topics":["exporter","php81","printer","var-export"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bermudaphp.png","metadata":{"files":{"readme":"README.RU.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-01-06T02:28:55.000Z","updated_at":"2025-06-13T05:53:40.000Z","dependencies_parsed_at":"2025-05-26T21:18:46.318Z","dependency_job_id":"506a22de-4ba7-4e38-b270-8e596b931899","html_url":"https://github.com/bermudaphp/var-export","commit_stats":{"total_commits":47,"total_committers":1,"mean_commits":47.0,"dds":0.0,"last_synced_commit":"86fd208eec0910a5581a0b708fc041f055922414"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/bermudaphp/var-export","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fvar-export","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fvar-export/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fvar-export/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fvar-export/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bermudaphp","download_url":"https://codeload.github.com/bermudaphp/var-export/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bermudaphp%2Fvar-export/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262431643,"owners_count":23310090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exporter","php81","printer","var-export"],"created_at":"2024-11-10T10:08:11.881Z","updated_at":"2025-06-28T12:33:06.981Z","avatar_url":"https://github.com/bermudaphp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VarExporter\n\n**[English version](README.md)**\n\nPHP библиотека для экспорта переменных в их строковое представление с расширенными возможностями форматирования и поддержкой замыканий.\n\n## Возможности\n\n- **Поддержка всех типов кроме объектов и ресурсов**\n- **Два режима форматирования**: стандартный (компактный) и красивый (с отступами)\n- **Экспорт замыканий**: полное извлечение исходного кода замыканий с разрешением пространств имён\n- **Настраиваемое форматирование**: пользовательские отступы, сортировка ключей, завершающие запятые\n- **Обработка особых значений**: INF, NAN, магические константы\n- **Интеграция с PHP-Parser**: продвинутый анализ AST для замыканий\n- **Обработка исключений**: подробная информация об ошибках для отладки\n\n## Установка\n\n```bash\ncomposer require bermudaphp/var-export\n```\n\n## Быстрый старт\n\n```php\nuse Bermuda\\VarExport\\VarExporter;\n\n// Простой экспорт массива\n$array = ['foo' =\u003e 'bar', 'nested' =\u003e [1, 2, 3]];\necho VarExporter::export($array);\n// Вывод: ['foo' =\u003e 'bar', 'nested' =\u003e [1, 2, 3]]\n\n// Красивое форматирование\necho VarExporter::exportPretty($array);\n// Вывод:\n// [\n//     'foo' =\u003e 'bar',\n//     'nested' =\u003e [\n//         1,\n//         2,\n//         3\n//     ]\n// ]\n```\n\n## Примеры использования\n\n### Базовый экспорт переменных\n\n```php\nuse Bermuda\\VarExport\\VarExporter;\n\n// Скалярные значения\necho VarExporter::export(42);           // 42\necho VarExporter::export('привет');     // 'привет'\necho VarExporter::export(true);         // true\necho VarExporter::export(null);         // null\n\n// Особые значения с плавающей точкой\necho VarExporter::export(INF);          // INF\necho VarExporter::export(-INF);         // -INF\necho VarExporter::export(NAN);          // NAN\n```\n\n### Экспорт массивов\n\n```php\nuse Bermuda\\VarExport\\VarExporter;\n\n$data = [\n    'users' =\u003e [\n        ['name' =\u003e 'Иван', 'age' =\u003e 30],\n        ['name' =\u003e 'Мария', 'age' =\u003e 25]\n    ],\n    'config' =\u003e [\n        'debug' =\u003e true,\n        'timeout' =\u003e 30\n    ]\n];\n\n// Стандартное форматирование (одна строка)\necho VarExporter::export($data);\n\n// Красивое форматирование (многострочное с отступами)\necho VarExporter::exportPretty($data);\n```\n\n### Экспорт замыканий\n\n```php\nuse Bermuda\\VarExport\\VarExporter;\n\n$multiplier = 2;\n$closure = function($x) use ($multiplier) {\n    return $x * $multiplier;\n};\n\n// Экспорт замыкания с полным исходным кодом\necho VarExporter::export($closure);\n// Вывод: function($x) use ($multiplier) { return $x * $multiplier; }\n\nclass A {\n    public function call()\n    {\n        $closure = fn(): string =\u003e self::class ;\n        dd(VarExporter::export($closure));\n    }\n}\n\n^ \"fn(): string =\u003e \\A::class\"\n```\n\n### Параметры конфигурации\n\n```php\nuse Bermuda\\VarExport\\{VarExporter, FormatterConfig, FormatterMode};\n\n$config = new FormatterConfig(\n    mode: FormatterMode::PRETTY,\n    indent: '  ',                    // 2 пробела вместо 4\n    maxDepth: 50,                   // Максимальная глубина вложенности\n    sortKeys: true,                 // Сортировать ключи массива\n    trailingComma: true            // Добавлять завершающую запятую в массивах\n);\n\n$array = ['c' =\u003e 3, 'a' =\u003e 1, 'b' =\u003e 2];\necho VarExporter::export($array, $config);\n```\n\n### Использование вспомогательных функций\n\n```php\nuse function Bermuda\\VarExport\\{export_var, export_array, export_closure};\n\n// Экспорт любой переменной с красивым форматированием по умолчанию\necho export_var(['foo' =\u003e 'bar']);\n\n// Экспорт массива специально\necho export_array([1, 2, 3]);\n\n// Экспорт замыкания специально\n$fn = fn($x) =\u003e $x * 2;\necho export_closure($fn);\n```\n\n## Расширенная конфигурация\n\n### Пользовательское форматирование\n\n```php\nuse Bermuda\\VarExport\\{VarExporter, FormatterConfig, FormatterMode};\n\n// Создание пользовательской конфигурации\n$config = new FormatterConfig(\n    mode: FormatterMode::PRETTY,\n    indent: \"\\t\",                   // Использовать табуляцию\n    sortKeys: true,                 // Сортировать ключи по алфавиту\n    trailingComma: true            // Добавлять завершающие запятые\n);\n\n// Применить к конкретному экспорту\n$result = VarExporter::export($data, $config);\n\n// Установить как по умолчанию для всех экспортов\nVarExporter::setDefaultConfig($config);\n```\n\n### Пользовательские экспортеры\n\n```php\nuse Bermuda\\VarExport\\{VarExporter, ArrayExporter, ClosureExporter};\n\n// Зарегистрировать пользовательский экспортер массивов\n$customArrayExporter = new ArrayExporter($customConfig);\nVarExporter::setExporter($customArrayExporter);\n\n// Зарегистрировать пользовательский экспортер замыканий\n$customClosureExporter = new ClosureExporter($customConfig);\nVarExporter::setExporter($customClosureExporter);\n```\n\n## Параметры конфигурации\n\n| Параметр | Тип | По умолчанию | Описание |\n|----------|-----|--------------|----------|\n| `mode` | `FormatterMode` | `STANDARD` | Режим форматирования (STANDARD или PRETTY) |\n| `indent` | `string` | `'    '` | Строка отступа (4 пробела по умолчанию) |\n| `maxDepth` | `int` | `100` | Максимальная глубина вложенности для предотвращения бесконечной рекурсии |\n| `sortKeys` | `bool` | `false` | Сортировать ли ключи массива |\n| `trailingComma` | `bool` | `false` | Добавлять ли завершающие запятые в массивах |\n\n## Поддерживаемые типы\n\n### ✅ Поддерживаются\n- **Массивы**: индексированные и ассоциативные массивы с полной поддержкой вложенности\n- **Замыкания**: анонимные функции и стрелочные функции с извлечением исходного кода\n- **Скаляры**: целые числа, числа с плавающей точкой, строки, логические значения, null\n- **Особые значения**: INF, -INF, NAN\n\n### ❌ Не поддерживаются\n- **Объекты**: обычные объекты (кроме замыканий)\n- **Ресурсы**: файловые дескрипторы, соединения с базой данных и т.д.\n\n## Обработка ошибок\n\nБиблиотека предоставляет подробную информацию об исключениях:\n\n```php\nuse Bermuda\\VarExport\\{VarExporter, ExportException};\n\ntry {\n    $object = new stdClass();\n    VarExporter::export($object);\n} catch (ExportException $e) {\n    echo \"Экспорт не удался: \" . $e-\u003egetMessage();\n    // Доступ к проблемной переменной\n    $problematicVar = $e-\u003evar;\n}\n```\n\n## Требования\n\n- PHP 8.1 или выше\n- nikic/php-parser (для функциональности экспорта замыканий)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbermudaphp%2Fvar-export","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbermudaphp%2Fvar-export","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbermudaphp%2Fvar-export/lists"}