Symfony Flex 实战篇 CJayhe Symfony博客 507 views ## 技术背景 SymfonyFlex 是Symfony4 之后的重要新功能。旨在自动化解决symfony组件安装之后得一系列得配置过程。实现原理是在安装之后去社区得食谱库找到对应得配置文件,按照配置文件进行自动化安装操作。 ## 第一步:创建自己得 Symfony Bundle 组件 首先你需要在 gitee 或者 github 创建自己得 Symfony Bundle 组件代码仓库。 参照 仓库 https://gitee.com/phpzlc/phpzlc 代码要点: 1.其必须有 Bundle.php 证明其 Symfony Bundle. ![](https://phpzlc.com//upload/66123b9c5ffc8.png) 2.composer.json 文件种必须标明所需要得依赖,其支持的symfony版本,在之后pr检测得时候很重要 ![](https://phpzlc.com//upload/66123c4025114.png) 注意:以上只是参照按照自己得真实情况修改。 ## 第二步 提交 Composer 和 锁定版本 仓库和代码准备好了之后,需要到 composer 平台提交仓库变成组件,然后再回到仓库给组件设置一个明确得版本号,然后更新composer平台,让版本生效。原因是flex pr验证 需要最小得稳定版本。 ## 第三步 fork 官方食谱库 组件本身准备好之后,我们就需要提交自己得食谱到官方得食谱库了。 1. fork 官方食谱库 前往 https://github.com/symfony/recipes-contrib 点击 ![](https://phpzlc.com//upload/66123dee9ae78.png) ![](https://phpzlc.com//upload/66123e4c5f66a.png) ## 第四步 将组件食谱加入官方食谱库 提交pr 1.建立目录 现在我们就可以对fork后得代码进行调整了。我们需要添加一个和自己得组件同名得文件夹,比如我得组件phpzlc/phpzlc 我需要建立得目录为 ![](https://phpzlc.com//upload/66123f0513f56.png) 如图所示,还得在目录种建立对应得版本文件夹,这样就会根据不同得版本找到不同得食谱配方。 ![](https://phpzlc.com//upload/66123fae12f09.png) **由于版本得匹配机制,以后版本升级,如果没有变化是不需要重写提交食谱到官方库的** 2.书写食谱 ![](https://phpzlc.com//upload/6612403dd3689.png) 食谱就是 `manifest.json` 文件 参照地址:https://github.com/symfony/recipes-contrib/blob/main/phpzlc/phpzlc/2.5/manifest.json phpzlc 各类食谱参照地址: https://github.com/symfony/recipes-contrib/blob/main/phpzlc 那么这些食谱参数得含义是什么了,请参照 请参照: https://github.com/symfony/recipes/blob/main/README.rst 3.注意事项 食谱得书写有代码格式要求,不然人工审核过不去,最好直接复制已有得食谱进行修改。 4.提交Pr 一切完成之后,提交代码,记得提交信息写的好看点,不要随便写,不然审核可能卡。然后提交pr到社区库里面即可。 ## 机器审核和人为审核 pr得审核有两个阶段,阶段1就是机器审核,会尝试安装组件和安装食谱,都ok了,才会进入到人工审核。 ## 补充组件 phpzlc flex 组件 人工审核,通常能过,但是如果你得组件和phpzlc一样,标新立异,那么可能就会不允许通过, 那么这时候你可以使用 https://packagist.org/packages/phpzlc/flex 组件 phpzlc flex 组件 重新实现 symfony flex 食谱中的 copy-from-package 配置 增加了 README 食谱选项。 你只需要在组件代码里面加入 Contrib\manifest.json 文件即可。 1.copy-from-package 配置参照 https://gitee.com/phpzlc/phpzlc/blob/master/Contrib/manifest.json 2.README.md 配置参照 在 Contrib 目录下建立 README.md 文件 效果是 会将该文件里面得内容 自动 追加到项目得README.md 文件内 3.执行 项目按照之后 执行 ```shell php bin/console phpzlc:flex:install phpzlc/phpzlc ``` 后面追加为组件名 **本文写完之后才发现 phpzlc/flex 目前只支持phpzlc名下得组件使用,如果需要使用请到qq群联系群主** ## 技术链接 链接中关于自建服务器得部分已经不可用,但**原理和进阶学习**可以通过此链接了解 https://phpzlc.com/doc/zh-CN/root/v1.0/phpzlc/symfony-flex 帮助PHPZlc项目! 与任何开源项目一样, 贡献代码 或 文档 是最常见的帮助方式, 但我们也有广泛的 赞助机会。 1 赞赏 加入技术群 评论 去登录