recoil / dev
Development and debugging tools for Recoil applications.
Installs: 4 093
Dependents: 3
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 1
Open Issues: 4
Type:composer-plugin
Requires
- php: >=7.4
- composer-plugin-api: ^1|^2
- eloquent/enumeration: ^5
- hamcrest/hamcrest-php: ^2
- nikic/php-parser: ^4
- recoil/api: ^1
Requires (Dev)
- composer/composer: ^1|^2
- eloquent/phony: ^5
- friendsofphp/php-cs-fixer: ^2
- peridot-php/leo: dev-php-8 as 1.999.999
- peridot-php/peridot: dev-php-8 as 1.999.999
- peridot-php/peridot-code-coverage-reporters: dev-php-8 as 2.999.999
- recoil/recoil: ^1
README
Development and debugging tools for Recoil applications.
composer require --dev recoil/dev
Usage
Primarily, recoil/dev
is a Composer plugin that automatically instruments
coroutine functions to provide meaningful stack traces in the event of an
exception. Without recoil/dev
, stack traces tend to show details about the
internals of the Recoil kernel, rather than the coroutines it is executing.
Instrumentation is performed automatically, by plugging in to the autoload pipeline. For most use cases no change is required in your code (other than the note below), and you should immediately see more usable stack traces.
The instrumentor identifies functions as coroutines if they have a return type
hint of Coroutine
, where Coroutine
is an alias for Generator
, for example:
// Alias Generator as Coroutine. use Generator as Coroutine; function doNothing(int $value): Coroutine // Mark function as a coroutine. { yield; }
The instrumentor will not instrument functions that use a return type hint of
Generator
, as without the alias it has no way to distinguish between an actual
coroutine and a regular generator function.
Troubleshooting
Check the following:
- Ensure that assertions are enabled on your development environment.
- Ensure that your coroutines are explicitly identified using
: Coroutine
type hint, as described above. - Syntax errors in your source files may break the PHP parsing used to generate instrumentation, leaving those files uninstrumented -- check your syntax!
- For further issues with autoload, or to disable instrumentation, see these further notes.
Building and testing
Please see CONTRIBUTING.md for information about running the tests and submitting changes.