A flexible and extensible processor pipeline component for the KaririCode framework. Enables the creation of modular, configurable processing chains for data transformation, validation, and sanitization tasks
MIT License
A robust and flexible component for creating and managing processing pipelines in the KaririCode Framework, providing advanced features for handling complex data processing tasks in PHP applications.
The ProcessorPipeline component can be easily installed via Composer, which is the recommended dependency manager for PHP projects.
To install the ProcessorPipeline component in your project, run the following command in your terminal:
composer require kariricode/processor-pipeline
This command will automatically add ProcessorPipeline to your project and install all necessary dependencies.
If you prefer not to use Composer, you can download the source code directly from the GitHub repository and include it manually in your project. However, we strongly recommend using Composer for easier dependency management and updates.
After installation, you can start using ProcessorPipeline in your PHP project immediately. Make sure to include the Composer autoloader in your script:
require_once 'vendor/autoload.php';
use KaririCode\Contract\Processor\Processor;
class EmailNormalizer implements Processor
{
public function process(mixed $input): string
{
return strtolower(trim($input));
}
}
class EmailValidator implements Processor
{
public function process(mixed $input): bool
{
return false !== filter_var($input, FILTER_VALIDATE_EMAIL);
}
}
use KaririCode\ProcessorPipeline\ProcessorRegistry;
use KaririCode\ProcessorPipeline\ProcessorBuilder;
$registry = new ProcessorRegistry();
$registry->register('user', 'emailNormalizer', new EmailNormalizer());
$registry->register('user', 'emailValidator', new EmailValidator());
$builder = new ProcessorBuilder($registry);
$pipeline = $builder->buildPipeline('user', ['emailNormalizer', 'emailValidator']);
$email = ' [email protected] ';
$normalizedEmail = $pipeline->process($email);
$isValid = $pipeline->process($normalizedEmail);
echo "Normalized: $normalizedEmail\n";
echo "Valid: " . ($isValid ? 'Yes' : 'No') . "\n";
Create configurable processors for more flexibility:
use KaririCode\Contract\Processor\ConfigurableProcessor;
class AgeValidator implements ConfigurableProcessor
{
private int $minAge = 0;
private int $maxAge = 120;
public function configure(array $options): void
{
if (isset($options['minAge'])) {
$this->minAge = $options['minAge'];
}
if (isset($options['maxAge'])) {
$this->maxAge = $options['maxAge'];
}
}
public function process(mixed $input): bool
{
return is_numeric($input) && $input >= $this->minAge && $input <= $this->maxAge;
}
}
$registry->register('user', 'ageValidator', new AgeValidator());
$pipeline = $builder->buildPipeline('user', ['ageValidator' => ['minAge' => 18, 'maxAge' => 100]]);
The ProcessorPipeline component is designed to work seamlessly with other KaririCode components:
Example using ProcessorPipeline with Validator:
use KaririCode\Validator\Validators\EmailValidator;
use KaririCode\Validator\Validators\NotEmptyValidator;
$registry->register('validation', 'email', new EmailValidator());
$registry->register('validation', 'notEmpty', new NotEmptyValidator());
$validationPipeline = $builder->buildPipeline('validation', ['notEmpty', 'email']);
$isValid = $validationPipeline->process($userInput);
For development and testing purposes, this package uses Docker and Docker Compose to ensure consistency across different environments. A Makefile is provided for convenience.
Clone the repository:
git clone https://github.com/KaririCode-Framework/kariricode-processor-pipeline.git
cd kariricode-processor-pipeline
Set up the environment:
make setup-env
Start the Docker containers:
make up
Install dependencies:
make composer-install
make up
: Start all services in the backgroundmake down
: Stop and remove all containersmake build
: Build Docker imagesmake shell
: Access the PHP container shellmake test
: Run testsmake coverage
: Run test coverage with visual formattingmake cs-fix
: Run PHP CS Fixer to fix code stylemake quality
: Run all quality commands (cs-check, test, security-check)For a full list of available commands, run:
make help
This project is licensed under the MIT License - see the LICENSE file for details.
Built with by the KaririCode team. Empowering developers to create more robust and flexible PHP applications.