使用Symf欧宝娱乐app下载地址ony Flex管理Symfony应用程序

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.4,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

使用Symf欧宝娱乐app下载地址ony Flex管理Symfony应用程序

欧宝娱乐app下载地址Symfony Flex是安装和管理Symfony应用程序的新方法。欧宝娱乐app下载地址Flex不是一个新的Symfony版欧宝娱乐app下载地址本,而是一个替代和改进Symfony的工具欧宝娱乐app下载地址Symfony安装程序欧宝娱乐app下载地址Symfony标准版

欧宝娱乐app下载地址Symfony Flex自动化Symfony应用程序最常见的任务欧宝娱乐app下载地址,比如安装和删除捆绑包和其他Composer依赖项。欧宝娱乐app下载地址Symfony Flex适用于Symfony 3.3及更高版本。从Symfony 4.0开始欧宝娱乐app下载地址,应该默认使用Flex,但它仍然是可选的。

Flex是如何工作的

欧宝娱乐app下载地址Symfony Flex是一个Composer插件,可以修改需要更新,删除命令。在启用flex的应用程序中安装或删除依赖项时,Symfony可以在执行Composer任务之前或之后执行任务。欧宝娱乐app下载地址

考虑下面的例子:

1 2
cd我的项目/作曲家要求邮寄者

如果您在不使用Flex的Symfony应用程序中执行该命令,您将看欧宝娱乐app下载地址到一个Composer错误来解释这一点梅勒不是有效的包名。但是,如果应用程序安装了Symfony Flex,该命令最终会安欧宝娱乐app下载地址装并启用SwiftmailerBundle,这是集成Swift Mailer (Symfony应用程序的官方邮件程序)的最佳方式。

当Symf欧宝娱乐app下载地址ony Flex安装在应用程序中并执行时作曲家要求,在尝试使用Composer安装包之前,应用程序向Symfony Flex服务器发欧宝娱乐app下载地址出请求。

  • 如果没有关于该包的信息,Flex服务器将不返回任何信息,并且包的安装遵循基于Composer的通常过程;
  • 如果有关于该包的特殊信息,Flex将其返回到一个名为“recipe”的文件中,应用程序使用它来决定安装哪个包以及在安装后运行哪些自动化任务。

在上面的例子中,Symfony Flex询问欧宝娱乐app下载地址梅勒包和Symfony Flex服务欧宝娱乐app下载地址器检测梅勒实际上是SwiftmailerBundle的别名,并返回它的“配方”。

Flex会跟踪它安装在欧宝娱乐app下载地址symfony.lock文件,该文件必须提交到代码存储库。

欧宝娱乐app下载地址Symfony Flex Recipes

类中定义了食谱manifest.json文件,可以包含任意数量的其他文件和目录。例如,这是manifest.jsonSwiftmailerBundle:

12 3 4 5 6 7 8 9 10 11 12
“包”: {“欧宝娱乐app下载地址Symfony \ \包\ \ SwiftmailerBundle \ \ SwiftmailerBundle”:【“所有”)},“copy-from-recipe”: {“配置/”“% CONFIG_DIR % /”},“env”: {“MAILER_URL”“smtp: / / localhost: 25 ?加密= &auth_mode = "},“别名”:【“梅勒”“邮件”]}

别名选项允许Flex使用简短且易于记忆的名称安装包(作曲家要求邮寄者vs作曲家需要symfony/swif欧宝娱乐app下载地址tmailer-bundle).的选项告诉Flex在哪些环境中应该自动启用这个包(所有在这种情况下)。的env选项使Flex向应用程序添加新的环境变量。最后,copy-from-recipe选项允许菜谱将文件和目录复制到应用程序中。

这里定义的指令manifest.jsonSymfony Flex在卸载依赖时也会使用欧宝娱乐app下载地址这些文件。作曲家删除邮件)以撤销所有更改。这意味着Flex可以从应用程序中删除SwiftmailerBundleMAILER_URL环境变量和由此配方创建的任何其他文件和目录。

欧宝娱乐app下载地址Symfony Flex配方由社区提供,它们存储在两个公共存储库中:欧宝下载链接

  • 主配方存储库,是一个精心策划的食谱列表,为高质量和维护的包。欧宝娱乐app下载地址默认情况下,Symfony Flex只在这个存储库中查找。
  • 贡献配方存储库,包含社区创建的所有食谱。欧宝下载链接它们都保证可以工作,但是它们的关联包可能无法维护。欧宝娱乐app下载地址Symfony Flex将在安装任何这些食谱之前征求您的许可。

读了欧宝娱乐app下载地址Symfony Recipes文欧宝体育电话档学习如何为自己的包制作食谱。

在新应用程序欧宝娱乐app下载地址中使用Symfony Flex

欧宝娱乐app下载地址Symfony发布了一个新的“骨架”项目,这是一个推荐用于创建新应用程序的最小Symfony项目。这个“骨架”已经包含了Symfony Flex作为依赖项。欧宝娱乐app下载地址这意味着您可以通过执行以下命令创建一个新的启用flex的Symfony应用程序:欧宝娱乐app下载地址

1
作曲家创建项目symfony/skeleton:欧宝娱乐app下载地址3.4。*我的项目

请注意

从Symfony 3.3开始,欧宝娱乐app下载地址不再推荐使用Symfony Installer来创建新的应用程序。使用作曲器创建项目命令。

将现有应用程序升级到Flex

使用Symf欧宝娱乐app下载地址ony Flex是可选的,即使在默认使用Flex的Symfony 4中也是如此。然而,Flex非常方便,并且极大地提高了您的工作效率,因此强烈建议您将现有的应用程序升级到Flex。

唯一需要注意的是,Symfony Flex要求应欧宝娱乐app下载地址用程序使用以下目录结构,这与Symfony 4默认使用的相同:

12 3 4 5 6 7 8 9 10 11 12 13
Your-project /├──config/│├──bundles.php│├──packages/│├──routes。│├──服务。yaml├──公共/│└──index . php├──src /│├──……│├──Kernel.php├──templates/├──vendor/

这意味着安装欧宝娱乐app下载地址symfony / flex应用程序中的依赖关系还不够。还必须将目录结构升级为上面所示的结构。没有自动工具来进行此升级,因此您必须遵循以下手动步骤:

  1. 创建一个新的空Symfony应用程序(欧宝娱乐app下载地址创建项目symfony/skeleton my-欧宝娱乐app下载地址project-flex
  2. 合并需要而且require-dev原始项目中定义的依赖项composer.json文件到composer.json新项目的文件(不要复制欧宝娱乐app下载地址symfony / symfony依赖项,但添加您在项目中有效使用的相关组件)。
  3. 在执行中的新项目中安装依赖项作曲家更新.这将使Symfony Flex欧宝娱乐app下载地址生成所有的配置文件配置/包/
  4. 查看生成的/ * .yaml配置/包文件中定义的配置进行所需的更改app / config / config_ * .yml您的原始项目文件。请注意,这是升级过程中最耗时且最容易出错的步骤。
  5. 中定义的原始参数应用程序/配置/参数。* .yml到新时代配置/ services.yaml而且.env文件取决于你的需要。如果你定义了包中的自定义配置选项把他们转移到新的地方配置/ services.yaml而且.env文件。
  6. 欧宝娱乐app下载地址SYMFONY_DEBUG而且欧宝娱乐app下载地址SYMFONY_ENV环境变量替换为APP_DEBUG而且APP_ENV.将它们的值复制到新的变量中,然后删除以前的变量。
  7. 将原始源代码从src /{应用,…}包/src /并将每个PHP文件的名称空间更新为App \…(高级ide可以自动执行此操作)。
  8. 将原始模板从应用程序/资源/视图/模板/而且应用程序/资源/翻译翻译/.您可能需要将其他一些文件移动到新位置。
  9. 进行应用程序所需的任何其他更改。例如,如果你原来的web / app_ *。php前控制器是定制的,将这些变化添加到新的公共/ index . php控制器。

自定义Flex路径

Flex食谱对项目的目录结构做了一些假设。属性下添加一个键,可以自定义其中一些假设额外的部分composer.json文件。例如,告诉Flex将任何PHP类复制到src /应用程序而不是src

1 2 3 4 5 6 7
“…”“…”“额外的”: {“src-dir”“src /应用程序”}}

可配置路径为:

  • bin-dir:默认为bin /
  • config-dir:默认为配置/
  • src-dir默认为src /
  • var-dir默认为var /
  • public-dir默认为公共/

如果自定义这些路径,则从配方复制的某些文件仍然可能包含对原始路径的引用。换句话说:您可能需要在安装配方后手动更新一些内容。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。