2017 © Pedro Peláez
 

library php-result

Abstraction that represends ok/fail result primitives

image

pldin601/php-result

Abstraction that represends ok/fail result primitives

  • Saturday, July 16, 2016
  • by pldin601
  • Repository
  • 2 Watchers
  • 2 Stars
  • 35 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

php-result

Build Status Code Climate Test Coverage Issue Count, (*1)

Result is an abstraction that can be used for returning and propagating errors. Result can be ok, representing success and containing a value, or fail, representing error and containing an error value., (*2)

Inspired by Rust's module std::result., (*3)

Functions

use Result as R;

R\ok('foo');
R\fail($value);

R\resultify($callable, ...$args);
R\notNull($callable, ...$args);
R\tryCatch($callable, $exceptionTransformCallable, ...$args);

R\isOk($result);
R\isFail($result);

R\ifOk($result, $callable);
R\ifFail($result, $callable);

R\getOrThrow($result, $exceptionClass);

R\bind($result, $callable);
R\pipeline(...$callables);

Pipeline example

use Result as R;


$readFile = function($filename) {
    return R\with($filename, 'file_exists', 'file_get_contents', function () {
        return "Can't read the file.";
    });
}

$proceedFile = function($content) {
    $transform = function ($exception) {
        return $exception->getMessage();
    };

    return R\tryCatch('doSomethingWithContent', $transform, $content);
}

$saveFile = function($filename) {
    return function ($content) use ($filename) {
        $bytesWritten = file_put_contents($filename, $content);

        return $bytesWritten === false
            ? R\fail("Can't save the file!")
            : R\ok();
    }
}

$pipeline = R\pipeline($readFile, $proceedFile, $saveFile('/tmp/output_file'));

$result = $pipeline('/tmp/input_file');

R\ifOk($result, function () {
    echo 'File successfully saved.';
});

The Versions

16/07 2016

dev-master

9999999-dev

Abstraction that represends ok/fail result primitives

  Sources   Download

MIT

The Development Requires

by Roman Gemini
by Cyril Sadovnik

16/07 2016

v1.1

1.1.0.0

Abstraction that represends ok/fail result primitives

  Sources   Download

MIT

The Development Requires

by Roman Gemini
by Cyril Sadovnik

12/07 2016

dev-based-on-fn

dev-based-on-fn

Abstraction that represends ok/fail result primitives

  Sources   Download

MIT

The Development Requires

by Roman Gemini
by Cyril Sadovnik

02/06 2016

v1.0.2

1.0.2.0

Abstraction that represends ok/fail result primitives

  Sources   Download

MIT

The Development Requires

by Roman Gemini
by Cyril Sadovnik

01/06 2016

v1.0.1

1.0.1.0

Abstraction that represends successful or errorful result

  Sources   Download

MIT

The Development Requires

by Roman Gemini

01/06 2016

v1.0

1.0.0.0

Abstraction that represends successful or errorful result

  Sources   Download

MIT

The Development Requires

by Roman Gemini