Download the PHP package alancole/vouchers without Composer
On this page you can find all versions of the php package alancole/vouchers. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download alancole/vouchers
More information about alancole/vouchers
Files in alancole/vouchers
Package vouchers
Short Description A Simple PHP library for gernating and validating voucher codes.
License
Informations about the package vouchers
Vouchers Lib
A PHP library for generating and validating vouchers. We make no assumptions about storage and instead offer the concept of Bags
which can take any number of Vouchers
. These bags can validate vouchers, generate new vouchers and apply validation
rules across the whole set.
Install
Example
Vouchers
Vouchers can take on almost any form, however you can use Vouchers\Voucher\Model
to enforce validation and structure. The only required attribute is code
which by default is immutable.
You may also pass an array to the voucher to set pre existing values to the voucher. Matching fields (including code
) will be validated.
Any value passed on voucher creation can be get and set using get()
and set()
on the voucher.
Model
By creating a model you can set default values and validation on vouchers created or loaded. Models are passed as an array to Vouchers\Voucher\Model
If you set a voucher attribute as immutable
then Voucher
will throw the ImmutableData
exception.
Code
You can change the way the code is generated by settings generator on a model. A generator must implement Vouchers\Voucher\Code\GeneratorInterface
Then tell the model to use this generator.
Bags
Bags act as collections for vouchers and allow you to enforce validations on a whole set. Bags can also act as a selector for vouchers, allowing to you pick a voucher at random and enforce rules on that selection. Bags are also Iterable
so they can be used in loops.
You can use Vouchers\Voucher\Model
to enfore a model on all items in a bag by passing a model as the first attribute on construction.
You can fill a model with existing vouchers by using add()
add will only accept an instance of Vouchers\Voucher
You can also run a map on any array, mapping the return as new vouchers within the bag. This is handy if you need to transform data to fit a model.
You can get a voucher by code, which can be used to see if a voucher exists.
Pick
You can have the bag pick you a voucher at random by using pick()
on any bag.
If you wish to validate the selection you can pass a callback to pick which will run until it returns a true
or throw an Vouchers\Exceptions\NoValidVouchers
exception.
You may also ask pick()
to check all validators this bag might have (see Validate) and only return a voucher that is valid. Again this will throw Vouchers\Exceptions\NoValidVouchers
is it doesn't find a voucher.
Validate
You can add validators to a bag, these validators can be used to validate requirements of a voucher using validate()
on a bag and passing the voucher code as a parameter.
Validators can be added as callbacks to the validator function, or as a class that implements Vouchers\Voucher\Validator
here is an example that assumes a voucher has an expire_date
and checks it has not passed.
Kitchen Sink
This shows how to get vouchers from the subscriptions api, take a requested voucher, validate it and the claim it on the API.