如何制作一个遵循Composer规范的独特插件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计990个文字,预计阅读时间需要4分钟。
这是最常被跳过的门板。你写的类功能再完整,只要没有+implements ComposerPluginPluginInterface+,或者漏掉了+activate(Composer $composer, IOInterface $io)+ 方法(注意参数类型不能错),Composer 就会完全忽略它。
-
activate()是唯一入口,所有事件监听、命令注册、配置读取都得放在这里;deactivate()可空实现,但不能省略 - 别在
__construct()里依赖$composer或$io—— 它们只在activate()调用时才可用 - 匿名类、无命名空间类、或命名空间与
autoload配置不匹配的类,都会导致自动加载失败,进而让PluginInterface根本无法实例化
composer.json 必须声明 "type": "composer-plugin" 并正确配置 autoload
Composer 不靠目录结构或文件名识别插件,全靠这个字段。设成 library 或留空,插件就永远不会被加载。
本文共计990个文字,预计阅读时间需要4分钟。
这是最常被跳过的门板。你写的类功能再完整,只要没有+implements ComposerPluginPluginInterface+,或者漏掉了+activate(Composer $composer, IOInterface $io)+ 方法(注意参数类型不能错),Composer 就会完全忽略它。
-
activate()是唯一入口,所有事件监听、命令注册、配置读取都得放在这里;deactivate()可空实现,但不能省略 - 别在
__construct()里依赖$composer或$io—— 它们只在activate()调用时才可用 - 匿名类、无命名空间类、或命名空间与
autoload配置不匹配的类,都会导致自动加载失败,进而让PluginInterface根本无法实例化
composer.json 必须声明 "type": "composer-plugin" 并正确配置 autoload
Composer 不靠目录结构或文件名识别插件,全靠这个字段。设成 library 或留空,插件就永远不会被加载。

