phpflo/phpflo-bundle
Symfony bundle integrating phpflo/phpflo, the PHP flow-based programming (FBP) library. It helps wire components into dataflow networks inside Symfony apps, letting you define and run modular, event-driven processing pipelines with familiar FBP concepts. Small package with limited adoption, so revie...
Architecture fit. PhpFlo is a PHP port of NoFlo implementing flow-based programming (FBP): components with input/output ports wired into a graph, with a runtime driving message flow. phpflo/phpflo-bundle is a thin integration layer — its job is to register components into the DI container, load graph definitions from configuration, and expose a runner (typically a console command). The substantive logic lives in the core phpflo/phpflo library. That distinction matters for the buy/build decision: the bundle is the least valuable part of the stack and the most likely to break.
Framework mismatch — read this first. The package is a Symfony bundle, not a Laravel package. It has no ServiceProvider, no config/*.php publishable config, no facade, and will not be picked up by Laravel's package auto-discovery. If the target application is Laravel, the bundle contributes effectively nothing: you would wire phpflo/phpflo into the container yourself. Treat this as "adopt a flow runtime," not "install a bundle."
Integration feasibility. Low, and the blockers are hard rather than cosmetic:
symfony/framework-bundle to the ~2.7|~3.0 era and PHP to ^5.6|^7.0. Under Symfony 5/6/7 or PHP 8.x this will conflict at the dependency-solver level, not the runtime level. Confirm with composer why-not before planning anything further.each(), curly-brace string offsets, dynamic properties, implicit nullable parameter deprecations, and Definition/ContainerBuilder API drift. The bundle itself may be small enough to patch; the core library is the bigger unknown.config/bundles.php (Symfony 4+) or AppKernel (legacy).Technical risk: high. Every signal points the same direction — 4 stars, 0 dependents, no release in ~8 years, single-maintainer bus factor, no visible security policy or CI. A composite score of 0.15 is an order of magnitude below what I would defend at an architecture review. There is no downstream usage to serve as a de facto compatibility test, which means you will discover every incompatibility firsthand.
Key questions to answer before spending engineering time:
phpflo/phpflo directly and writing ~100 lines of container wiring delivers the same outcome with one less abandoned dependency.Stack fit. If the host is Symfony, the bundle's config-driven graph registration is a genuine (if small) convenience — but only on a legacy LTS. If the host is Laravel, skip the bundle entirely: add phpflo/phpflo and bind the flow factory as a singleton, exposing it through a dedicated service class or an artisan command. Do not attempt to emulate Symfony's bundle system inside Laravel.
Migration path. Three viable options, in descending order of recommendation:
phpflo/phpflo as an external dependency. Eliminates one abandoned package from the tree and makes the integration auditable.Compatibility. Expect to support exactly one Symfony major and one PHP minor line. Pin hard (~2.7 / ~3.0 era constraints), and do not attempt to run this alongside a framework upgrade — the two efforts will collide in composer.json and in kernel/bundle registration.
Sequencing.
composer why-not output is the go/no-go gate. Most evaluations should end here.Maintenance. Assume full ownership from day one. There is no upstream to file issues against in any meaningful sense, no release cadence, and no security response process. If this code runs in production, someone on the team must be able to read and patch it. That is a permanent, if small, tax — and it is invisible in the initial estimate.
Support. Zero external support surface: no documentation beyond source, negligible community (4 stars), no Stack Overflow corpus. When something breaks, the answer is "read the library," not "search." Factor this into incident MTTR — it is the single largest hidden cost here.
Scaling. The runtime is in-process and synchronous; throughput scales by adding workers, not by scaling the graph. Two concrete ceilings:
Failure modes to instrument explicitly. Flow-based runtimes fail in ways conventional request/response code does not:
Ramp-up. Steep and non-transferable. FBP concepts — ports, components, graphs, information packets, backpressure — are unfamiliar to most PHP engineers and absent from the surrounding ecosystem. With no documentation, onboarding is mentor-driven: plan for one engineer to become the internal authority and treat that as a key-person risk. Realistically 2–3 weeks before a mid-level developer can modify a graph unaided.
Recommendation. Do not adopt this bundle as a production dependency. Run the constraint spike to confirm the expected Composer conflict, then either (a) use phpflo/phpflo directly with first-party wiring if the dataflow requirement is real and narrow, or (b) satisfy the requirement with Symfony Messenger / Laravel queues. The 0.15 score is a fair verdict: this is a reference implementation for a pattern, not a component to build on.
How can I help you explore Laravel packages today?