-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Export
Serializer::exporter() — экспорт значений в валидный исполняемый PHP-код:
конфиги и кэш-файлы, которые opcache исполняет быстрее любого формата
десериализации.
Аналог var_export() с современным синтаксисом: короткие массивы [],
list-массивы без ключей, enum как Class::CASE, даты как конструкторы
new \DateTimeImmutable(...), stdClass как (object) [...]. Результат — строка
кода (или готовый файл <?php return ...;), которую можно записать и подключить
через require; после первого запуска opcache держит его в скомпилированном виде.
use CloudCastle\Serialize\Serializer;
$exporter = Serializer::exporter();
$exporter->export(['a' => 1, 'b' => [2, 3]]); // "[\n 'a' => 1, ...]"
$exporter->export(Status::Paid); // "\App\Status::Paid"
// Готовый файл конфигурации для opcache
file_put_contents('config.php', $exporter->exportFile([
'debug' => false,
'locale' => 'ru',
'status' => Status::Draft,
]));
$config = require 'config.php'; // исполняется opcache- Кэш-файлы под
opcache— быстрее любой десериализации (нет разбора в рантайме). - Современный синтаксис: короткие массивы, enum, даты,
stdClass. - В разы быстрее
brick/varexporter(см. Сравнение). - Fail-safe: непредставимый тип (замыкание, ресурс) даёт исключение, а не мусорный код.
- Поддерживает скаляры, массивы, enum, даты и
stdClass; произвольные объекты — через ObjectMapper в массив, затем экспорт. - Экспортируемый код исполняется — не применяйте к недоверенным данным как к коду.
- Компиляция конфигов и справочников в PHP-файлы для прогрева
opcache. - Кэш редко меняющихся структур (маршруты, права, словари) на диск.
- Экспорт пользовательского ввода с последующим
eval/require— исполнение чужого кода. - Экспорт больших часто меняющихся данных — теряется выигрыш
opcache.
CloudCastle Serialize · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)