<?php
/*
* This file is part of Chevere.
*
* (c) Rodolfo Berrios <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chevere\Workflow\Traits;
use BadMethodCallException;
use Chevere\Workflow\Interfaces\RunInterface;
use Chevere\Workflow\Interfaces\WorkflowInterface;
use function Chevere\Workflow\run;
/**
* Provides method `execute()` to assign `$run` property.
* Provides method `run()` to access the `$run` property.
*/
trait WorkflowTrait // @phpstan-ignore-line
{
private RunInterface $run;
/**
* Access the `$run` property.
*
* ```php
* $this->run();
* ```
*/
public function run(): RunInterface
{
return $this->run
??= throw new BadMethodCallException();
}
/**
* Run the given workflow with the provided arguments.
*
* ```php
* $this->execute($workflow, name: 'value',...);
* ```
*/
private function execute(WorkflowInterface $workflow, mixed ...$argument): void
{
$this->run = run($workflow, ...$argument);
}
}
|