Skip to content

Generate new variable symbol by last variable and selected strategy.

License

Notifications You must be signed in to change notification settings

baraja-core/variable-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Variable generator

Integrity check

Generate new variable symbol by last variable and selected strategy.

Idea

A series of smart tools for generating variable symbols and order numbers in your e-shop.

Generating order numbers or other number series hides a number of complex problems. For example, adhering to the specified format according to the specification, handling transaction entries (to avoid duplication) and handling the case when the generated value overflows.

This package contains a set of algorithms and ready-made strategies to elegantly solve these problems. If any of the algorithms do not suit you, you can implement your own just by satisfying the defined interface.

📦 Installation

It's best to use Composer for installation, and you can also find the package on Packagist and GitHub.

To install, simply use the command:

$ composer require baraja-core/variable-generator

You can use the package manually by creating an instance of the internal classes, or register a DIC extension to link the services directly to the Nette Framework.

How to use

At the beginning, create an instance of the Generator or get it from the DIC. If you are using Doctrine entities, there is an autoconfiguration that will automatically find your entity with an order (must meet the OrderEntity interface) and you can start generating numbers.

Example:

$generator = new VariableGenerator(
	variableLoader, // last used variable loader, default is DefaultOrderVariableLoader
	strategy, // generator strategy, default is YearPrefixIncrementStrategy
	entityManager, // if you want use default variable loader by Doctrine entity
);

The generator is easy to use.

Retrieve the next free number (using it without an argument automatically retrieves the last used number based on the variableLoader service).

echo $generator->generate();

Getting the next available number based on the user's choice:

echo $generator->generate(21010034); // next will be 21010035

Retrieving the last generated number:

echo $generator->getCurrent();

You can always choose your own strategy for generating numbers:

$generator->setStrategy();

Protection duplicate number generation

This tool automatically protects you from generating a duplicate number. To protect you, an automatic lock (see the baraja-core/lock library for more information) is used, which allows only one number to be generated at a time, while competing processes in other threads are suspended in the meantime.

📄 License

baraja-core/variable-generator is licensed under the MIT license. See the LICENSE file for more details.