者指南:5個步驟為項目添加新的中間件擴展)
PuPHPet開發(fā)者指南5個步驟為項目添加新的中間件擴展【免費下載鏈接】puphpetVagrant/Puppet GUI項目地址: https://gitcode.com/gh_mirrors/pu/puphpetPuPHPet 是一款開源的Vagrant/Puppet GUI工具基于 Symfony 構建通過網(wǎng)頁表單即可生成自定義的 PHP 開發(fā)虛擬機。本文面向想貢獻代碼的開發(fā)者教你用5 個簡單步驟為 PuPHPet 添加一個新的中間件擴展例如新增一個數(shù)據(jù)庫、消息隊列或搜索模塊讓你生成的虛擬機能力更豐富。準備工作克隆代碼并跑通項目git clone https://gitcode.com/gh_mirrors/pu/puphpet cd puphpet composer install提交代碼前請遵循倉庫根目錄的 CONTRIBUTING.md 規(guī)范從 master 切出特性分支、壓縮為單個 commit 再發(fā)起 PR。1?? 讀懂擴展機制一個擴展由哪些部分組成PuPHPet 采用配置驅(qū)動設計每個中間件擴展由 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合并后注冊到內(nèi)存中。注意擴展名中的連字符-會被自動轉換為下劃線_。2?? 創(chuàng)建擴展配置三件套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下拉框等可選項數(shù)據(jù)可為空可以直接參考現(xiàn)成的 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?? 添加控制器與視圖讓擴展出現(xiàn)在 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 的安裝復選框 折疊面板 上一節(jié)/下一節(jié)按鈕結構。第三步加入側邊菜單src/PuphpetBundle/Resources/views/side-menu.html.twig第 9-81 行在合適的分組如 Databases中添加一個指向#memcached的data-toggletab鏈接這樣新擴展就會出現(xiàn)在左側導航和標簽頁中。?5?? 對接 Puppet 模塊并驗證打包輸出引入 Puppet 模塊虛擬機真正安裝中間件靠的是 Puppet。把新模塊加入archive/puphpet/puppet/Puppetfile必要時在archive/puphpet/puppet/manifests/site.pp中聲明參數(shù)如extra_config_files。理解數(shù)據(jù)流向用戶提交表單后FrontController.php 的postIndexAction()第 46-58 行調(diào)用Manager的createConfig()將表單數(shù)據(jù)與各擴展默認值合并再經(jīng)createArchive()輸出puphpet/config.yaml并打包成 ZIP 供下載。因此你的data.yml鍵名就是最終config.yaml中的頂層鍵。跑測試bin/phpunit? 提交前驗證清單三個 YAML 文件無語法錯誤Manager啟動不報錯services.yml中已注冊擴展控制器路由、視圖模板、側邊菜單三項齊全生成 ZIP 后puphpet/config.yaml中出現(xiàn)新擴展的完整配置鍵用vagrant up實測虛擬機可正常安裝新中間件 完成以上 5 個步驟你就成功為 PuPHPet 這個 Vagrant/Puppet GUI 添加了一個新的中間件擴展。按照同樣的配置三件套 注冊 控制器 視圖 Puppet 模塊套路后續(xù)每新增一個模塊都會越來越順手。【免費下載鏈接】puphpetVagrant/Puppet GUI項目地址: https://gitcode.com/gh_mirrors/pu/puphpet創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考