PuPHPet开发者指南:5个步骤为项目添加新的中间件扩展
PuPHPet开发者指南5个步骤为项目添加新的中间件扩展【免费下载链接】puphpetVagrant/Puppet GUI项目地址: https://gitcode.com/gh_mirrors/pu/puphpetPuPHPet 是一款开源的Vagrant/Puppet GUI工具基于 Symfony 构建通过网页表单即可生成自定义的 PHP 开发虚拟机。本文面向想贡献代码的开发者教你用5 个简单步骤为 PuPHPet 添加一个新的中间件扩展例如新增一个数据库、消息队列或搜索模块让你生成的虚拟机能力更丰富。准备工作克隆代码并跑通项目git clone https://gitcode.com/gh_mirrors/pu/puphpet cd puphpet composer install提交代码前请遵循仓库根目录的 CONTRIBUTING.md 规范从 master 切出特性分支、压缩为单个 commit 再发起 PR。1️⃣ 读懂扩展机制一个扩展由哪些部分组成PuPHPet 采用配置驱动设计每个中间件扩展由 4 部分组成先建立整体认知再动手。组成部分位置职责YAML 配置三件套src/PuphpetBundle/Resources/config/扩展名/表单默认值与可选项扩展管理器src/PuphpetBundle/Extension/Manager.php加载并合并配置控制器src/PuphpetBundle/Controller/渲染扩展页面、定义路由视图模板src/PuphpetBundle/Resources/views/GUI 表单界面核心逻辑在Manager.php的addExtension()方法约第 32-55 行它读取扩展目录下的data.yml、defaults.yml、available.yml用array_replace_recursive合并后注册到内存中。注意扩展名中的连字符-会被自动转换为下划线_。2️⃣ 创建扩展配置三件套data.yml / defaults.yml / available.yml在src/PuphpetBundle/Resources/config/下为你的新扩展假设叫memcached建一个目录放入三个文件# memcached/data.yml用户表单提交的默认值 install: 0 settings: port: 11211 # memcached/defaults.yml出厂默认值会与 data 合并 install: 0 settings: port: 11211 # memcached/available.yml下拉框等可选项数据可为空可以直接参考现成的 Redis 扩展src/PuphpetBundle/Resources/config/redis/data.yml、defaults.yml、available.yml结构一目了然。 命名建议目录名用小写连字符风格如elastic-search与services.yml中的注册名保持一致。3️⃣ 在 services.yml 中注册新的中间件扩展打开src/PuphpetBundle/Resources/config/services.yml第 5-48 行找到puphpet.extension.manager服务的calls列表按功能分组追加一行# work queue - [ addExtension, [ beanstalkd ] ] - [ addExtension, [ rabbitmq ] ] - [ addExtension, [ memcached ] ] # ← 你的新扩展注册完成后Manager会在应用启动时自动加载三件套 YAML。若 YAML 语法有误启动时就会抛出解析异常——这也是 ManagerTest.php 中专门覆盖的场景。4️⃣ 添加控制器与视图让扩展出现在 GUI 页面第一步新建控制器src/PuphpetBundle/Controller/MemcachedController.php继承PuphpetBundle\Controller仿照最简模板 RedisController.php第 15-28 行class MemcachedController extends Controller { /** * Route(/extension/memcached, namepuphpet.memcached.homepage) */ public function indexAction(Request $request, array $data) { return $this-render(PuphpetBundle::memcached.html.twig, [ memcached $data, ]); } }第二步新建视图src/PuphpetBundle/Resources/views/memcached.html.twig。表单命名有约定安装开关input typehidden namememcached[install] value0 / 一个value1的 checkbox配置项namememcached[settings][port]这种扩展[分组][字段]格式提交时会原样写入config.yaml。可参考 redis.html.twig 的安装复选框 折叠面板 上一节/下一节按钮结构。第三步加入侧边菜单src/PuphpetBundle/Resources/views/side-menu.html.twig第 9-81 行在合适的分组如 Databases中添加一个指向#memcached的data-toggletab链接这样新扩展就会出现在左侧导航和标签页中。️5️⃣ 对接 Puppet 模块并验证打包输出引入 Puppet 模块虚拟机真正安装中间件靠的是 Puppet。把新模块加入archive/puphpet/puppet/Puppetfile必要时在archive/puphpet/puppet/manifests/site.pp中声明参数如extra_config_files。理解数据流向用户提交表单后FrontController.php 的postIndexAction()第 46-58 行调用Manager的createConfig()将表单数据与各扩展默认值合并再经createArchive()输出puphpet/config.yaml并打包成 ZIP 供下载。因此你的data.yml键名就是最终config.yaml中的顶层键。跑测试bin/phpunit✅ 提交前验证清单三个 YAML 文件无语法错误Manager启动不报错services.yml中已注册扩展控制器路由、视图模板、侧边菜单三项齐全生成 ZIP 后puphpet/config.yaml中出现新扩展的完整配置键用vagrant up实测虚拟机可正常安装新中间件 完成以上 5 个步骤你就成功为 PuPHPet 这个 Vagrant/Puppet GUI 添加了一个新的中间件扩展。按照同样的配置三件套 注册 控制器 视图 Puppet 模块套路后续每新增一个模块都会越来越顺手。【免费下载链接】puphpetVagrant/Puppet GUI项目地址: https://gitcode.com/gh_mirrors/pu/puphpet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考