PHP code example of ali-eltaweel / predkit

1. Go to this page and download the library: Download ali-eltaweel/predkit 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/ */

    

ali-eltaweel / predkit example snippets


use Predkit\Predicate;

class IsEven extends Predicate {

    public function test(mixed $number): bool {

        return $number % 2 === 0;
    }
}

$predicate = new IsEven();

use Predkit\Predicate;

$predicate = Predicate::fromCallable(function (mixed $number): bool {
    
    return $number % 2 === 0;
});

$predicate->test(4); // true
$predicate->test(5); // false

$evenNumbers = array_filter([1, 2, 3, 4, 5], $predicate); // [2, 4]

use Predkit\Predicate;

$evenPredicate = Predicate::fromCallable(function (mixed $number): bool {

    return $number % 2 === 0;
});

$greaterThanFivePredicate = Predicate::fromCallable(function (mixed $number): bool {

    return $number > 5;
});

// and
$evenAndGreaterThanFivePredicate = $evenPredicate->and($greaterThanFivePredicate);
array_filter(range(0, 10), $evenAndGreaterThanFivePredicate); // [6, 8, 10]

// or
$evenOrGreaterThanFivePredicate  = $evenPredicate->or($greaterThanFivePredicate);
array_filter(range(0, 10), $evenOrGreaterThanFivePredicate); // [0, 2, 4, 6, 7, 8, 9, 10]

// not
$oddPredicate = $evenPredicate->not();
array_filter(range(0, 10), $oddPredicate); // [1, 3, 5, 7, 9]

// nand
$evenNandGreaterThanFivePredicate = $evenPredicate->nand($greaterThanFivePredicate);
array_filter(range(0, 10), $evenNandGreaterThanFivePredicate); // [0, 1, 2, 3, 4, 5, 7, 9]

// nor
$evenNorGreaterThanFivePredicate = $evenPredicate->nor($greaterThanFivePredicate);
array_filter(range(0, 10), $evenNorGreaterThanFivePredicate); // [1, 3, 5]

// xor
$evenXorGreaterThanFivePredicate = $evenPredicate->xor($greaterThanFivePredicate);
array_filter(range(0, 10), $evenXorGreaterThanFivePredicate); // [ 0, 2, 4, 7, 9 ]

// xnor
$evenXnorGreaterThanFivePredicate = $evenPredicate->xnor($greaterThanFivePredicate);
array_filter(range(0, 10), $evenXnorGreaterThanFivePredicate); // [ 1, 3, 5, 6, 8, 10 ]