2017 © Pedro PelĂĄez
 

library lmcondition

Condition library

image

lukaszmakuch/lmcondition

Condition library

  • Saturday, January 16, 2016
  • by lukaszmakuch
  • Repository
  • 1 Watchers
  • 0 Stars
  • 9 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

PHP Condition library

This library allows to build complex conditions connected with AND/OR statements with subconditions support and then check them in some context., (*1)

travis, (*2)

Usage

Getting objects

Building conditions

Let's say we want to match books that are hard to read or those ones with titles longer than 50 characters:, (*3)

$wiseBookCondition = (new ConditionComposite())
    ->addOR(new Difficulty(Difficulty::HARD))
    ->addOR(new TitleOfMoreCharsThan(50));

Or easy books with short titles for children:, (*4)

$booksForChildrenCondition = (new ConditionComposite())
    ->addAND(new Difficulty(Difficulty::EASY))
    ->addAND((new TitleOfMoreCharsThan(15))->negate());

Or those with really long titles:, (*5)

$titleLogerThan99Condition = new TitleOfMoreCharsThan(99);

Building context

An easy to read book with a long title:, (*6)

$easyBookWithLongTitle = (new Book())
    ->setTitle("A really long title of some book that must be wise.")
    ->markAsEasy();

A hard to read book with short title:, (*7)

$hardBookWithShortTitle = (new Book())
    ->markAsHard()
    ->setTitle("How?");

An easy to read book with a short title:, (*8)

$easyBookWithShortTitle = (new Book())
    ->markAsEasy()
    ->setTitle("Cats");

Checking

Is a condition true?

Is this book wise?, (*9)

$wiseBookCondition->isTrueIn($easyBookWithLongTitle); //true
$wiseBookCondition->isTrueIn($hardBookWithShortTitle); //true
$wiseBookCondition->isTrueIn($easyBookWithShortTitle); //false

Is it for children?, (*10)

$booksForChildrenCondition->isTrueIn($easyBookWithLongTitle); //false
$booksForChildrenCondition->isTrueIn($hardBookWithShortTitle); //false
$booksForChildrenCondition->isTrueIn($easyBookWithShortTitle); //true

Is the title longer than 99 characters?, (*11)

$titleLogerThan99Condition->isTrueIn($easyBookWithLongTitle); //false
$titleLogerThan99Condition->isTrueIn($hardBookWithShortTitle); //false
$titleLogerThan99Condition->isTrueIn($easyBookWithShortTitle);//false

Does intersection exist between two conditions?

A title of a wise book may be longer than 99 characters., (*12)

/* @var $intersectDetector IntersectDetector */
$intersectDetector->intersectExists(
    $wiseBookCondition,
    $titleLogerThan99Condition
); //true

But books for children have no titles that long., (*13)

/* @var $intersectDetector IntersectDetector */
$intersectDetector->intersectExists(
    $booksForChildrenCondition,
    $titleLogerThan99Condition
); //false

Are two conditions equal?

Two condition objects may be equal., (*14)

/* @var $comparator EqualityComparator */
$comparator->equal(
    $titleLogerThan99Condition,
    new TitleOfMoreCharsThan(99)
); //true

Installation

Use composer to get the latest version:, (*15)

$ composer require lukaszmakuch/lmcondition

Example

The above code is taken from an example code located in ./examples. You can check there all files needed to provide this functionality., (*16)

Documentation

For more information check the best documentation - unit tests in ./tests. There's also documentation generated in ./doc., (*17)

The Versions