调用autoload.php后,作曲家执行脚本

时间:2018-12-11 09:32:19

标签: php composer-php autoload

我正在编写一个composer软件包,该软件包需要在调用Composer autoload.php时以及在访问其类和方法之前执行安全检查列表

我有这个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并加载主类DefStudio\Logger\Logger.php之后,我需要执行以下方法:每次加载该类时执行Logger::perform_checks()

我的代码实际上是:

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


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

我需要我的程序包每次调用Logger::perform_checks()时都调用autoload.php,并且我不想依靠用户来记住调用它。我希望在{{ 1}}被调用

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

1 个答案:

答案 0 :(得分:1)

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

更新了我的package 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'时,我的代码也会被执行