1. Go to this page and download the library: Download mareg/either 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/ */
mareg / either example snippets
use PlasmaConduit\either\Left;
use PlasmaConduit\either\Right;
use PlasmaConduit\option\Some;
use PlasmaConduit\option\None;
function loadNews() {
$connection = PsuedoDB::connect();
if (!$connection) {
return new Left("Failed connection to DB");
}
$news = $connection->get("latestNews");
if ($news) {
return new Right($news);
} else {
return new Left("Failed reading latest news");
}
}
$news = loadNews()->fold(
function($failMessage) {
PsudeoLogger::log($failMessage);
return new None();
},
function($news) {
return new Some($news);
}
)->getOrElse("No news at the moment, please check back later.");
namespace PlasmaConduit\either;
interface Either {
/**
* Returns true if this `Either` type is `Left`, false otherwise
*
* @return {Boolean}
*/
public function isLeft();
/**
* Returns true if this `Either` type is `Right`, false otherwise
*
* @return {Boolean}
*/
public function isRight();
/**
* This function takes two callable types as it's arguments and it will
* only call one of them. If this `Either` type is `Left` it calls
* `$leftCase` with the left value. If this is the `Right` type it calls
* the `$rightCase` with the right value.
*
* @param {callable} $leftCase - Callable for left case
* @param {callable} $rightCase - Callable for right case
* @return {Any} - Whatever the ran case returns
*/
public function fold($leftCase, $rightCase);
/**
* Returns an `Option` projection of the `Left` value of this `Either` type.
* So if this is type `Left` it returns `Some($value)` but if this is
* `Right` it returns `None`
*
* @return {PlasmaConduit\option\Option}
*/
public function left();
/**
* Returns an `Option` projection of the `Right` value of this `Either`
* type. So if this is type `Right` it returns `Some($value)` but if this is
* `Left` it returns `None`
*
* @return {PlasmaConduit\option\Option}
*/
public function right();
/**
* Returns the `Either` type as the opposite side. `Left` returns `Right`
* and vice versa.
*
* @return {Either}
*/
public function swap();
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.