Drupal 9.3.x中如何通过Composer自动加载类并运行脚本?
Drupal 9.3.x 自定义Composer脚本自动加载与配置方案
核心问题分析
报错根源是类命名空间与Composer自动加载规则不匹配,或是自动加载配置未正确指向类文件路径。先确认Starter.php的命名空间是否符合Drupal规范:
// web/modules/custom/d9_starter_kit/src/Starter.php namespace Drupal\d9_starter_kit; class Starter { public static function doStart() { // 你的文件复制、重命名、编辑逻辑 } }
正确配置步骤(推荐直接修改项目根目录composer.json)
无需在自定义模块内单独创建composer.json,直接在项目根的composer.json中完成配置即可:
1. 配置自动加载规则
在项目根composer.json的autoload字段下添加psr-4规则,指向自定义模块的src目录:
{ "autoload": { "psr-4": { "Drupal\\d9_starter_kit\\": "web/modules/custom/d9_starter_kit/src/" } } }
2. 注册Composer脚本
在项目根composer.json的scripts字段中添加自定义脚本,直接调用类的静态方法:
{ "scripts": { "starter:init": "Drupal\\d9_starter_kit\\Starter::doStart" } }
3. 更新自动加载映射
配置完成后必须执行以下命令,让Composer生成新的自动加载映射文件:
composer dump-autoload
4. 运行自定义脚本
执行以下命令即可触发自动化逻辑:
composer starter:init
常见错误排查
- 命名空间错误:确保命名空间
Drupal\d9_starter_kit与模块机器名d9_starter_kit完全一致,Drupal模块的命名空间规范为Drupal\{模块机器名} - 文件路径错误:确认
psr-4配置中的路径是从项目根目录到模块src的相对路径,层级不要写错 - 未执行
dump-autoload:每次修改自动加载配置后必须执行该命令,否则Composer不会更新自动加载映射
内容的提问来源于stack exchange,提问作者Giuseppe
相关产品推荐
相关产品推荐

