Download the PHP package bentools/specification without Composer

On this page you can find all versions of the php package bentools/specification. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package specification

Latest Stable Version License Build Status Coverage Status Scrutinizer Code Quality Total Downloads

bentools/specification

PHP7.1+ implementation of the Specification Pattern.

The goal

The Specification Pattern allows you to wrap some conditionnal structures into value objects. This may have no sense in your usual code, but it can be useful when the combination of your business rules reaches a high Cyclomatic Complexity.

Thus, wrapping your conditions into named objects with a specific failure handling may help you to:

The principles of the Specification Pattern are borrowed from Domain Driven Design, but can be applied anywhere.

Overview

A specification is a kind of enhanced conditionnal structure, which can be chained to other specifications.

Here's how to create a specification:

As you can see, the validate() method is used to validate a specification is met. It returns void (nothing).

When a specification is unmet, the validate() method throws an UnmetSpecificationException:

When handling these exceptions, you can know which specification(s) failed. To identify them, you can name each specification:

Specification quick check

Instead of dealing with try/catch blocks, you can check wether or not a specification is met by calling $spec->isSatisfied(), which will handle this for you and return a boolean.

Create specifications

The spec(), group() and not() functions, and the and() and or() methods are Specification factories, that will return a Specification object. They accept as an argument:

Examples:

Group and Chain specifications

A Specification object contains and and or methods that can be used to create composite specifications. You can also use the group() function which will behave like parenthesis:

Create your own specifications

Since the Specification Pattern is intended to test your business rules, you can extend the abstract Specification class to create your own objects instead of relying on simple booleans:

Advanced Example

Since the Specification Pattern is intended to test your business rules, you should better implement your own Specification classes.

See our example to get started.

Installation

License

MIT


All versions of specification with dependencies

PHP Build Version
Package Version
Requires php Version >=7.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package bentools/specification contains the following files

Loading the files please wait ....