Table of Contents
Understanding Composer Events and Script Names
Setting Up Scripts in composer.json
Using Event Classes for More Control
Testing and Debugging Your Scripts
Home Development Tools composer How do I hook into Composer events using scripts?

How do I hook into Composer events using scripts?

Jul 26, 2025 am 07:52 AM
composer Script

To run custom logic, use Composer scripts, first add scripts blocks in composer.json and bind events. The main steps are: 1. Understand the built-in events of Composer such as pre-install-cmd, post-install-cmd, etc.; 2. Set scripts block, specify commands or script arrays as needed, and execute them in order; 3. Use class processing to achieve more complex control, and receive Event and IO interfaces through static methods; 4. Manually run Composer commands during testing and check the output and return code to ensure that the script works normally.

When you want to run custom logic during Composer operations—like installing, updating, or dumping autoloads—you can hook into Composer events using the scripts section in your composer.json . This lets you automate tasks like clearing caches, running build steps, or triggering notifications based on what Composer is doing.

Here's how to actually make use of Composer scripts and respond to its built-in events.


Understanding Composer Events and Script Names

Composer fires off a number of predefined events during its lifecycle. These include:

  • pre-install-cmd
  • post-install-cmd
  • pre-update-cmd
  • post-update-cmd
  • pre-autoload-dump
  • post-autoload-dump
  • post-package-install
  • post-package-update
  • post-root-package-install

Each of these script names corresponds to an event that happens during a Composer command. For example, post-install-cmd runs after composer install , and post-update-cmd runs after composer update .

You don't have to use all of them, but knowing which ones exist helps you choose the right moment to inject your own logic.


Setting Up Scripts in composer.json

To hook into any of these events, just add a scripts block to your composer.json . Here's a basic example:

 {
  "scripts": {
    "post-install-cmd": [
      "echo 'Composer install complete!'",
      "php bin/notify_dev_team.php"
    ],
    "post-update-cmd": "php bin/clear_cache.php"
  }
}

In this case:

  • After composer install , it prints a message and triggers a notification script.
  • After composer update , it clears the cache by calling a PHP file.

You can also call shell scripts, artisan commands (in Laravel), or even npm scripts if needed. Just make sure the paths are correct and executable.

A few tips:

  • You can list multiple commands per event as an array.
  • Each command is executed in order.
  • If one fails, Composer will stop unless you prepend @ to ignore failures: @php something-that-might-fail.php

Using Event Classes for More Control

If you need more flexibility or want to pass parameters from Composer to your code, you can use a class-based handler instead of just a shell command.

For example:

 {
  "scripts": {
    "post-install-cmd": "My\\Script\\Handler::onPostInstall"
  }
}

This assumes you've written a class My\Script\Handler with a static method onPostInstall() . The method receives two arguments:

  • An instance of Composer\Script\Event
  • The Composer IO interface ( Composer\IO\IOInterface )

This gives you access to things like package names, options passed to the command, and allows for more robust scripting inside your app context.

Make sure your autoloader includes the namespace where your handler lives so Composer can find and execute it.


Testing and Debugging Your Scripts

It's easy to break things with custom scripts, especially when deploying to production or CI environments. To test locally:

  1. Run composer install or update manually and watch output.
  2. Use echo or logging to see if your script ran.
  3. Check return codes—if a script exits with non-zero status, Composer treats it as a failure.

Also, keep in mind:

  • Scripts are inherited by dependent packages, so be careful not to override someone else's without good reason.
  • Avoid long-running processes unless necessary; Composer expects scripts to finish quickly.

Basically that's it. Hooking into Composer events via scripts is straightforward once you know the event names and how to structure the composer.json . Whether you're calling simple shell commands or full PHP classes, it's a powerful way to tie your project's behavior into dependency management.

The above is the detailed content of How do I hook into Composer events using scripts?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1510
276
PHP calls AI intelligent voice assistant PHP voice interaction system construction PHP calls AI intelligent voice assistant PHP voice interaction system construction Jul 25, 2025 pm 08:45 PM

User voice input is captured and sent to the PHP backend through the MediaRecorder API of the front-end JavaScript; 2. PHP saves the audio as a temporary file and calls STTAPI (such as Google or Baidu voice recognition) to convert it into text; 3. PHP sends the text to an AI service (such as OpenAIGPT) to obtain intelligent reply; 4. PHP then calls TTSAPI (such as Baidu or Google voice synthesis) to convert the reply to a voice file; 5. PHP streams the voice file back to the front-end to play, completing interaction. The entire process is dominated by PHP to ensure seamless connection between all links.

What is Packagist, and what role does it play in Composer? What is Packagist, and what role does it play in Composer? Jun 25, 2025 am 12:04 AM

Packagist is Composer's default package repository for centralized management and discovery of PHP packages. It stores the metadata of the package instead of the code itself, allowing developers to define dependencies through composer.json and get the code from the source (such as GitHub) at installation time. Its core functions include: 1. Provide centralized package browsing and search; 2. Manage versions to meet dependency constraints; 3. Automatic updates are achieved through webhooks. While custom repositories can be configured to use Composer, Packagist simplifies the distribution process of public packages. The publishing package needs to be submitted to Packagist and set up a webhook, so that others can install it with one click through composerrequire.

What are some best practices for using Composer in production environments? What are some best practices for using Composer in production environments? Jul 08, 2025 am 01:00 AM

When using Composer in a production environment, you need to pay attention to safety, stability and performance. 1. Use composerinstall-no-dev to reduce unnecessary development dependencies and reduce online environment risks; 2. Always submit and rely on composer.lock files to ensure version consistency, and avoid using updates during deployment; 3. Optional configuration platform-check=false ignores platform differences warnings, which is suitable for building packaging scenarios; 4. Enable APCU to accelerate automatic loading to improve performance, especially suitable for high concurrency services, while paying attention to namespace uniqueness to avoid cache conflicts.

How do I install Composer on my operating system (Windows, macOS, Linux)? How do I install Composer on my operating system (Windows, macOS, Linux)? Jul 01, 2025 am 12:15 AM

Installing Composer takes only a few steps and is suitable for Windows, macOS, and Linux. Windows users should download Composer-Setup.exe and run it to ensure that PHP is installed or XAMPP is used; macOS users need to execute download, verification, and global installation commands through the terminal; Linux users operate similarly to macOS, and then use the corresponding package manager to install PHP and download and move the Composer file to the global directory.

How to use PHP to combine AI to generate image. PHP automatically generates art works How to use PHP to combine AI to generate image. PHP automatically generates art works Jul 25, 2025 pm 07:21 PM

PHP does not directly perform AI image processing, but integrates through APIs, because it is good at web development rather than computing-intensive tasks. API integration can achieve professional division of labor, reduce costs, and improve efficiency; 2. Integrating key technologies include using Guzzle or cURL to send HTTP requests, JSON data encoding and decoding, API key security authentication, asynchronous queue processing time-consuming tasks, robust error handling and retry mechanism, image storage and display; 3. Common challenges include API cost out of control, uncontrollable generation results, poor user experience, security risks and difficult data management. The response strategies are setting user quotas and caches, providing propt guidance and multi-picture selection, asynchronous notifications and progress prompts, key environment variable storage and content audit, and cloud storage.

PHP integrated AI intelligent picture recognition PHP visual content automatic labeling PHP integrated AI intelligent picture recognition PHP visual content automatic labeling Jul 25, 2025 pm 05:42 PM

The core idea of integrating AI visual understanding capabilities into PHP applications is to use the third-party AI visual service API, which is responsible for uploading images, sending requests, receiving and parsing JSON results, and storing tags into the database; 2. Automatic image tagging can significantly improve efficiency, enhance content searchability, optimize management and recommendation, and change visual content from "dead data" to "live data"; 3. Selecting AI services requires comprehensive judgments based on functional matching, accuracy, cost, ease of use, regional delay and data compliance, and it is recommended to start from general services such as Google CloudVision; 4. Common challenges include network timeout, key security, error processing, image format limitation, cost control, asynchronous processing requirements and AI recognition accuracy issues.

How do I prevent malicious packages from being installed through Composer? How do I prevent malicious packages from being installed through Composer? Jun 25, 2025 am 12:09 AM

TokeepComposer-basedprojectssecure,startbyproactivelyusingbuilt-intoolsandbestpracticesbecauseComposerdoesnotcheckformaliciouscodebydefault.1.KeepdependenciesupdatedregularlybyusingcomposeroutdatedandautomationtoolslikeDependabotorRenovate,butreviewc

How do I check if Composer is installed correctly? How do I check if Composer is installed correctly? Jul 07, 2025 am 12:12 AM

To check whether Composer is installed correctly, first run the composer--version command to view the version information. If the version number is displayed, it means that it is installed. Secondly, use the composerdiagnose command to detect configuration problems and ensure that the environment variables and permissions are normal. Finally, try to verify the functional integrity through the composerrequiremonolog/monolog installation package. If the vendor directory is successfully created and the dependency is downloaded, it means that Composer is fully available. If the above steps fail, you may need to check whether PHP has been installed globally or adjusted system path settings.

See all articles