- Is iter8/builder actually a Laravel package?
- No. Despite the fluent-builder framing, iter8/builder is a Silex service provider that registers a spreadsheet writer into a Pimple container. It ships no Laravel ServiceProvider, facade, or publishable config, and Silex itself was abandoned in 2018. Treat any description of it as a Laravel query builder with scepticism.
- Does iter8/builder support Laravel 10, 11, or 12?
- It does not. The package's only release is dated 2018-10-31 and almost certainly declares php ^5.6 || ^7.0, while Laravel 10 and later require PHP 8.1 or newer. Composer dependency resolution will fail outright. Forcing an install with --ignore-platform-reqs drags in unpatched PhpSpreadsheet 1.x and Spout 2.x versions with known CVEs.
- How do I install iter8/builder with Composer?
- composer require iter8/builder will not resolve inside a modern Laravel application because of the PHP and PhpSpreadsheet/Spout constraints. You could install it with --ignore-platform-reqs, but that is not recommended. If you only need the code for reference, clone the GitHub repository instead of adding it as a dependency.
- What does iter8/builder actually do?
- Based on its source, it is a thin abstraction that selects between two spreadsheet engines, PhpSpreadsheet for rich formatting and Spout for streaming exports, behind a single builder-style interface. It is not a database query builder despite the fluent API language used to describe it. The total surface area is likely under 300 lines of code.
- Is iter8/builder safe to use in production?
- Not in its published form. There has been no release in roughly seven years, it has a single maintainer with one star and zero dependents, and there is no evidence of CI or a test suite. Pulling it in pins a transitive dependency tree that no longer receives security patches, so any defect becomes your team's to fix.
- What should I use instead of iter8/builder for Excel exports in Laravel?
- Laravel Excel (maatwebsite/excel) is the standard choice for feature-rich exports with queue and chunk support, and it is actively maintained on PhpSpreadsheet. For memory-safe streaming of very large files, use openspout/openspout, the maintained successor to Spout. Both are PHP 8 ready and have real support communities.
- Can I fork or vendor iter8/builder and maintain it myself?
- Yes, and that is the only realistic path if you genuinely want the abstraction. Snapshot the source at its 2018 release, retain the MIT notice, and delete the Silex and Pimple registration entirely. Then replace box/spout with openspout/openspout at a current major, noting the rename is not a drop-in, and budget three to five engineer-days plus ongoing ownership.
- Does iter8/builder work on PHP 8?
- There is no evidence that it does. The package was released in October 2018, before PHP 8 existed, and there is no CI configuration or changelog showing compatibility work. Its pinned PhpSpreadsheet 1.x and Spout 2.x versions would need upgrading regardless of the PHP runtime you target.
- How would I bind an iter8/builder-style abstraction in Laravel's service container?
- Write a small SpreadsheetWriter interface with two adapters, one wrapping PhpSpreadsheet and one wrapping OpenSpout. Register the chosen implementation inside a ServiceProvider and bind the interface in the register method. This delivers the same runtime engine-switching capability in roughly 150 lines, without carrying a dead microframework dependency.
- How do I test a fluent builder or data pipeline in Laravel?
- Because builders are plain objects, you can instantiate them directly in a unit test without booting the container. Assert that each chainable method returns the builder instance for fluency, then assert the composed output against a fixed fixture. If you keep two spreadsheet drivers, add a contract test suite that proves byte-level parity or documents the divergence explicitly.