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).