tourze / yield-breakable-caller
BreakableCaller, using Yield
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/tourze/yield-breakable-caller
Requires
- php: ^8.1
 
Requires (Dev)
- phpstan/phpstan: ^2.1
 - phpunit/phpunit: ^10.0
 
This package is auto-updated.
Last update: 2025-10-31 07:58:47 UTC
README
A lightweight PHP library for breakable step-by-step task execution using Generators (yield). Allows interruption of task flow at any step based on custom conditions.
Features
- Step-by-step task execution based on PHP Generator (yield)
 - Interrupt task flow at any step by custom logic
 - Simple, dependency-free implementation
 - Suitable for scenarios requiring controllable breakpoints in process
 
Installation
- Requires PHP >= 8.1
 - Install via Composer:
 
composer require tourze/yield-breakable-caller
Quick Start
use Tourze\YieldBreakableCaller\BreakableCaller; $caller = new BreakableCaller(); $task = function () { echo "Step 1 executing\n"; yield; echo "Step 2 executing\n"; yield; echo "Step 3 executing\n"; yield; echo "Step 4 executing\n"; }; $shouldContinue = function () { static $count = 0; $count++; return $count < 3; // Interrupt after 3rd step }; $caller->invoke($task, $shouldContinue);
Output:
Step 1 executing
Step 2 executing
Step 3 executing
Documentation
Core API
BreakableCaller::invoke(callable $callback, callable $shouldNext): void
$callback: A function returning a generator$shouldNext: A callback to determine whether to continue after each step
Behavior
- After each 
yield,$shouldNextis evaluated. If it returnsfalse, all subsequent steps are interrupted. - Supports empty generators, single-yield generators, and will throw if callback does not return a generator.
 
Contributing
We welcome contributions to improve this library. Please follow these guidelines:
- Submit issues for bugs or feature requests
 - Follow PSR coding standards
 - Write tests for new features
 - Update documentation when needed
 
Development
- Clone the repository
 - Install dependencies: 
composer install - Run tests: 
composer testorvendor/bin/phpunit - Run static analysis: 
composer phpstanorvendor/bin/phpstan analyse 
License
This library is licensed under the MIT License. See the LICENSE file for details.
Changelog
See CHANGELOG.md for version history and updates (if available).