1. Go to this page and download the library: Download stygian91/php-cordyceps library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
stygian91 / php-cordyceps example snippets
// this:
function myFunc($arg) {
$value1 = somethingThatCouldBeNull1($arg);
if (is_null($value1)) {
return null;
}
$value2 = somethingThatCouldBeNull2($value1);
if (is_null($value2)) {
return null;
}
$value3 = somethingThatCouldBeNull3($value2);
if (is_null($value3)) {
return null;
}
// use $value3
}
// ------------
// becomes this:
function myFunc2($arg) {
$option = Option::make(somethingThatCouldBeNull1($arg))
// Any callable works here, you can pass regular functions, anon functions and class methods
// the same way you'd pass them to `call_user_func_array`.
->map('somethingThatCouldBeNull2')
->map('somethingThatCouldBeNull3')
->map(function ($value) {
// use final $value
});
// At the end you *will* need to unwrap the value to see if the chain succeeded.
// You can query if the wrapped value is "something" or "nothing" with $option->isSome() and $option->isNone().
// $option->unwrap() will return the wrapped value, be it null or not.
// If you want to provide a fallback value, you can use $option->unwrapOr($fallback).
// You can also lazily evaluate the fallback value by using $option->unwrapOrElse(fn () => 'fallback value').
}
// this:
function thisCouldGoWrong1($arg) {
// ...
if (somethingIsWrong($arg)) {
throw new Exception('oops');
}
return 'some value';
}
function thisCouldGoWrong2($arg) {
// ...
if (somethingIsWrong2($arg)) {
throw new Exception('oops 2');
}
return 'some value 2';
}
try {
$res = thisCouldGoWrong1(42);
$res = thisCouldGoWrong2($res);
} catch (\Throwable $th) {
// handle error
}
// ------------
// becomes this:
function thisCouldGoWrong1($arg) {
// ...
if (somethingIsWrong($arg)) {
return Result::makeErr(new Exception('oops'));
}
return Result::makeOk('some value');
}
function thisCouldGoWrong2($arg) {
// ...
if (somethingIsWrong($arg)) {
return Result::makeErr(new Exception('oops 2'));
}
return Result::makeOk('some value 2');
}
$res = thisCouldGoWrong1(42)
// just like Option, you can pass anything that would fit in `call_user_func_array`
->andThen('thisCouldGoWrong2');
if ($res->isErr()) {
$exception = $res->unwrap();
// handle the exception
} else {
$value = $res->unwrap();
}
// or if you want, you can provide a fallback value, like you can with option:
$value = $res->unwrapOr('fallback');
// or lazily-evaluated version:
$value = $res->unwrapOrElse(fn () => 'fallback');
// Result::try's arguments are the same as call_user_func_array
$res = Result::try('thisCouldThrow', ['func arg', 'func arg 2']);
if ($res->isErr()) {
// handle error
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.