1. Go to this page and download the library: Download teewurst/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/ */
teewurst / pipeline example snippets
// .. In your factory
$tasksFromEnvConfig = $config->getTasks() // somewhere in your config: [Task1::class, Task2::class, Task3::class];
$pipeline = (new PipelineService)->createPsr11($serviceManager, $tasksFromEnvConfig);
// Configuration of BiPRO Request (= German XML Request Standard)
$tasklist = [
CheckServiceAvailabilityTask::class,
[ // do Request
ErrorHandlerTask::class, // catch execution of submission even on error
[
PrepareDataTask::class,
ValidateDataTask::class,
DoGetOfferRequestTask::class
],
// .. some additional things like set quote, upload documents etc.
],
[ // do something additionally
LogResultLocalyTask::class,
LogResultInDWTask::class,
]
];
// Create Tasks in order of execution
$tasks = [
new ExceptionTask(),
new ErrorBagTask(),
new OpenStreamTask(),
new ReadValuesTask(),
new ValidateValuesTask(),
new RequireDocumentsTask(),
new HandleImportTask(),
];
// Create Pipeline
$pipeline = new \teewurst\Pipeline\Pipeline($tasks);
// Create Payload
$payload = new ImportPayload();
// Setup Payload
$payload->setEnvironment($env); // <= here you also could use $pipeline->setOptions(...)
$payload->setConfig($config);
// Do the thing the pipeline is constructed for
$payload = $pipeline->handle($payload);
// Evaluate result
$payload->getMessage();
public function __invoke(PayloadInterface $payload, PipelineInterface $pipeline): PayloadInterface {
// there is something, so we need to continue with our tasks
if ($payload->getValue() > 0) {
return $pipeline->handle($payload);
}
// we do not allow negative values => Completely interrupt process
if ($payload->getValue() < 0) {
throw new \Exception("Negative Values are not allowed here");
}
// Value is 0, let's pretend there is nothing more to do. => Interrupt from here and go back up the callstack
return $payload;
}
public function __invoke(PayloadInterface $payload, PipelineInterface $pipeline): PayloadInterface {
try {
// handle next steps BEFORE doing something
$payload = $pipeline->handle($payload);
} catch (\Throwable $e) {
$this->logger->logException($e, ['context' => $payload]);
}
return $payload;
}
public function __invoke(PayloadInterface $payload, PipelineInterface $pipeline): PayloadInterface {
// Do something before handle next steps
$payload->setErrorBag($this->errorBag);
// Pipeline will add errors to error bag
$payload = $pipeline->handle($payload);
// "On the way back" and after handling, we check if something is inside the error bag
if ($payload->getErrorBag()->hasErrors()) {
$payload->setMessage($payload->getErrorBag()->toString());
}
return $payload;
}