Composer 在调用 autoload.php 后执行脚本

Composer execute script after calling autoload.php

我正在编写一个 composer 包,它需要在调用 Composer autoload.php 时以及访问其 classes 和方法

之前执行一系列安全检查

我有这个 composer.json 文件:

{
    "name": "def-studio/logger",
    "description": "Def Studio logger system",
    "type": "library",
    "require": {
        "php": ">=5.3.0"
    },
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "DefStudio\Logger\": "src/"
        }
    }
}

调用 ./vendor/autoload.php 并加载主 class DefStudio\Logger\Logger.php 后,我需要执行此方法: Logger::perform_checks() 每次加载 class .

我的代码实际上是:

include_once './vendor/autoload.php';
use DefStudio\Logger\Logger;
Logger::perform_checks();


try{
   //random messy code here
}catch(Exception $ex){
   Logger::error("error!", $ex);
}

我需要我的包在每次调用 autoload.php 时调用 Logger::perform_checks(),我不想依赖用户记住调用它。我希望它在什么时候自动调用autoload.php 被调用

有什么方法可以在调用 autoload.php 时自动执行 php 脚本吗?

感谢 Dejv 的评论,我在他链接的问题中找到了一个有用的答案:

更新了我的包 composer.json 文件以添加要在自动加载时执行的脚本:

{
    "name": "def-studio/logger",
    "description": "Def Studio logger system",
    "type": "library",
    "require": {
        "php": ">=5.3.0"
    },
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "DefStudio\Logger\": "src/"
        }
        "files": ["src/utilities/autoloader.php"]
    }
}

并且在 autoloader.php 我执行了我的检查和启动代码

这样,当开发者调用include_once './vendor/autoload.php'时,我的代码也被执行了