PHP code example of kariricode / processor-pipeline
1. Go to this page and download the library: Download kariricode/processor-pipeline library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kariricode / processor-pipeline example snippets
declare(strict_types=1);
or\Processor;
use KaririCode\ProcessorPipeline\ProcessorBuilder;
use KaririCode\ProcessorPipeline\ProcessorRegistry;
use KaririCode\ProcessorPipeline\Result\ProcessingResultCollection;
// Example of actual processors.
class UpperCaseProcessor implements Processor
{
public function process(mixed $input): mixed
{
return strtoupper((string) $input);
}
}
class TrimProcessor implements Processor
{
public function process(mixed $input): mixed
{
return trim((string) $input);
}
}
class EmailTransformerProcessor implements Processor
{
public function process(mixed $input): mixed
{
return strtolower((string) $input);
}
}
class EmailValidatorProcessor implements Processor
{
public function __construct(private ProcessingResultCollection $resultCollection)
{
}
public function process(mixed $input): mixed
{
if (!filter_var($input, FILTER_VALIDATE_EMAIL)) {
$this->resultCollection->addError(
self::class,
'invalidFormat',
"Invalid email format: $input"
);
}
return $input;
}
}
// Function to handle pipeline execution
function executePipeline(ProcessorBuilder $builder, ProcessorRegistry $registry, array $processorSpecs, string $input): void
{
$resultCollection = new ProcessingResultCollection();
$context = 'example_context';
$registry->register($context, 'upper_case', new UpperCaseProcessor())
->register($context, 'trim', new TrimProcessor())
->register($context, 'email_transform', new EmailTransformerProcessor())
->register($context, 'email_validate', new EmailValidatorProcessor($resultCollection));
try {
$pipeline = $builder->buildPipeline($context, $processorSpecs);
$output = $pipeline->process($input);
// Displaying the results
echo "Original Input: '$input'\n";
echo "Pipeline Output: '$output'\n";
// Display errors if any
if ($resultCollection->hasErrors()) {
echo "\nProcessing Errors:\n";
print_r($resultCollection->getErrors());
} else {
echo "\nNo processing errors encountered.\n";
}
} catch (\Exception $e) {
echo "Error executing the pipeline: " . $e->getMessage() . "\n";
}
}
// Register processors to a context in the registry.
$registry = new ProcessorRegistry();
$builder = new ProcessorBuilder($registry);
// Execute scenario 1 - Valid input
$processorSpecs = [
'upper_case' => false,
'trim' => true,
'email_transform' => true,
'email_validate' => true,
];
$input = " [email protected] ";
echo "Scenario 1 - Valid Input\n";
executePipeline($builder, $registry, $processorSpecs, $input);
// Execute scenario 2 - Invalid input
$input = " InvalidEmail@@@ ";
echo "\nScenario 2 - Invalid Input:\n";
executePipeline($builder, $registry, $processorSpecs, $input);
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]]);
use KaririCode\Validator\Attribute\Validate;
class UserProfile
{
#[Validate(
processors: [
' => 'Username is lidate(
processors: ['
// Getters and setters...
}
use KaririCode\ProcessorPipeline\ProcessorRegistry;
use KaririCode\Validator\Validator;
use KaririCode\Validator\Processor\Logic\RequiredValidator;
use KaririCode\Validator\Processor\Input\LengthValidator;
use KaririCode\Validator\Processor\Input\EmailValidator;
$registry = new ProcessorRegistry();
$registry->register('validator', '->validate($userProfile);
if ($result->hasErrors()) {
foreach ($result->getErrors() as $property => $errors) {
foreach ($errors as $error) {
echo "$property: {$error['message']}\n";
}
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.