承接 lukaszmakuch/lmcondition 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lukaszmakuch/lmcondition

最新稳定版本:v0.0.2

Composer 安装命令:

composer require lukaszmakuch/lmcondition

包简介

Condition library

README 文档

README

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

travis

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:

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

Or easy books with short titles for children:

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

Or those with really long titles:

$titleLogerThan99Condition = new TitleOfMoreCharsThan(99);

Building context

An easy to read book with a long title:

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

A hard to read book with short title:

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

An easy to read book with a short title:

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

Checking

Is a condition true?

Is this book wise?

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

Is it for children?

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

Is the title longer than 99 characters?

$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.

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

But books for children have no titles that long.

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

Are two conditions equal?

Two condition objects may be equal.

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

Installation

Use composer to get the latest version:

$ 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.

Documentation

For more information check the best documentation - unit tests in ./tests. There's also documentation generated in ./doc.

统计信息

  • 总下载量: 19
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-08-22