ghostwriter / handrail
Safeguard PHP functions from redeclaration conflicts
Fund package maintenance!
ghostwriter
Installs: 3 728
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 1
Type:composer-plugin
Requires
- php: >=8.3
- composer-plugin-api: ^2.6.0
- composer-runtime-api: ^2.2.2
- ext-tokenizer: *
- composer/composer: ^2.8.1
- ghostwriter/container: ^4.0.3
- ghostwriter/event-dispatcher: ^5.0.2
- ghostwriter/filesystem: ^0.1.1
- ghostwriter/json: ^3.0.0
Requires (Dev)
- ghostwriter/coding-standard: dev-main
README
Safeguard your PHP code by wrapping function declarations in if (!function_exists())
blocks.
Ensures that functions are only declared if they do not already exist, preventing redeclaration conflicts.
Star ⭐️ this repo if you find it useful
You can also star (🌟) this repo to find it easier later.
Installation
You can install the package via composer:
composer require ghostwriter/handrail
Example
Before running Handrail:
<?php function exampleFunction() { // some code } function anotherFunction() { // more code }
After running Handrail:
<?php if (!function_exists('exampleFunction')) { function exampleFunction() { // some code } } if (!function_exists('anotherFunction')) { function anotherFunction() { // more code } }
Configuration
To configure the paths or files to scan, create a composer extra
configuration in your composer.json
:
{ "extra": { "ghostwriter/handrail": { "disable": false, "packages": [ "vendor/package" ], "files": [ "vendor/amphp/amp/src/functions.php", "relative/path/to/file.php" ] } } }
disable
: (default:false
) A boolean flag to enable or disable Handrail.files
: (default:[]
) An array of files to scan for function declarations.
Usage
Automatic Execution
After installing and configuring Handrail, we will automatically hook into Composer’s lifecycle events (post-install-cmd
and post-update-cmd
) after Composer installs or updates packages.
composer install
composer update
Manual Execution
You can also run Handrail manually using the following Composer command:
composer handrail
Advanced Usage
Running Handrail Programmatically
Handrail provides an API for programmatic execution within PHP scripts:
use Ghostwriter\Handrail\Handrail; Handrail::new()->guard($phpFile);
Credits
Thanks
- Yevhen Sidelnyk for the inspiration.
Changelog
Please see CHANGELOG.md for more information on what has changed recently.
License
Please see LICENSE for more information on the license that applies to this project.
Security
Please see SECURITY.md for more information on security disclosure process.