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'
时,我的代码也被执行了
我正在编写一个 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'
时,我的代码也被执行了