我正在编写一个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脚本吗?
答案 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'
时,我的代码也会被执行