Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Flow Laravel Package

darkwood/flow

Flow is a PHP 8.5+ package for asynchronous, functional pipelines. Use FlowFactory to compose yielded callables into reusable flows, pass input through Ip, and await results. It supports visual code assembly and ships with examples for flows, Y-combinator, and server/client usage.

View on GitHub
Deep Wiki
Context7

Why ?

Flow concept aims to solve

  • Adopt asynchronous as native implementation
  • Build your code with functional programming
  • Assemble your code visually

Installation

PHP 8.5 is the minimal version to use Flow The recommended way to install it through Composer and execute

composer require darkwood/flow

Usage

<?php

use Flow\Flow\Flow;
use Flow\FlowFactory;
use Flow\Ip;

class D1 {
    public function __construct(public int $n1) {}
}

class D2 {
    public function __construct(public int $n2) {}
}

class D3 {
    public function __construct(public int $n3) {}
}

class D4 {
    public function __construct(public int $n4) {}
}

$flow = (new FlowFactory())->create(static function() {
    yield fn (D1 $data1) => new D2($data1->n1 += 1);
    yield fn (D2 $data2) => new D3($data2->n2 * 2);
    yield function(D3 $data3) {
        printf("my number %d\n", $ip->data->n3)); // display 'my number 10'

        return new D4($data3->n3);
    };
});

$ip = new Ip(new D1(4));
$flow($ip);
$flow->await();

Examples

A working script is available in the bundled examples directory

  • Run Flow : php examples/flow.php
  • Run Y-Combinator Flow : php examples/yflow.php
  • Start Server : php examples/server.php
    Start Client(s) : php examples/client.php

Documentation

https://darkwood-com.github.io/flow

License

Flow is released under the MIT License.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log