Skip to content

darkwood-com/flow

1.x
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Flow

Why ?

Flow concept aims to solve

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

Installation

PHP 8.2 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\Ip;

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

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

$flow = Flow::do(static function() {
    yield fn (D1 $data1) => new D2($data1->n1 += 1);
    yield fn (D2 $data2) => $data2->n2 * 2;
});

$ip = new Ip(new D1(4));
$flow($ip, fn ($ip) => printf("my number %d\n", $ip->data->n2)); // display 'my number 10'

Examples

A working script is available in the bundled examples directory

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

Documentation

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

License

Flow is released under the MIT License.