Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

darkwood-com/flow

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

361 Commits
361 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.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.

Sponsor this project

 

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.