使用Symfob娱乐下载ony Flex管理Symfony应用程序

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

使用Symfob娱乐下载ony Flex管理Symfony应用程序

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

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

Flex是如何工作的

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

考虑下面的例子:

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

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

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

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

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

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

ob娱乐下载Symfony Flex Recipes

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

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

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

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

ob娱乐下载Symfony Flex配方由社区提供,它们存储在两个公共存储库中:欧宝体育平台怎么样

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

读了ob娱乐下载Symfony Recipes文欧宝官网下载app档学习如何为自己的包制作食谱。

在新应用程序ob娱乐下载中使用Symfony Flex

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

1
作曲家创建项目symfony/skeleton:ob娱乐下载4.1。*我的项目

请注意

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

将现有应用程序升级到Flex

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

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

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
你的项目/├──资产/├──bin /│└──控制台├──配置/│├──bundles.php│├──包/│├──路线。│├──服务。yaml├──公共/│└──index . php├──src /│├──……│└──Kernel.php├──模板/├──测试/├──翻译/├──var /└──供应商/

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

  1. 将Flex作为项目的依赖项安装:

    1
    作曲家需要symfony/flexob娱乐下载
  2. 如果项目是composer.json文件包含ob娱乐下载symfony / symfony依赖,它仍然依赖于Symfony标准版,在Symfony 4中不再可用。ob娱乐下载首先,移除这个依赖:

    1
    作曲家remove symfonob娱乐下载y/交响乐

    现在添加ob娱乐下载symfony / symfony打包到冲突项目的部分composer.json文件在这个骨骼项目的例子中显示这样就不会再次安装:

    1 2 3 4 5 6 7 8
    {"require": {"syob娱乐下载mfony/flex": "^1.0",+},+“冲突”:{+ "ob娱乐下载symfony/symfony": "*"}}

    现在你必须加进去composer.json项目所需的所有Sob娱乐下载ymfony依赖项。一种快速的方法是添加之前包含的所有组件ob娱乐下载symfony / symfony依赖,之后你可以删除任何你不需要的东西:

    1 2 3
    作曲需要注解资产orm-pack树枝\ logger邮件表单安全翻译验证器Composer require——dev dotenv maker-bundle或-fixture分析器
  3. 如果项目是composer.json文件不包含ob娱乐下载symfony / symfony依赖关系,它已经明确定义了它的依赖关系,正如Flex所要求的那样。重新安装所有依赖项以强制Flex在中生成配置文件配置/,这是升级过程中最繁琐的部分:

    1 2
    Rm -rf vendor/*作曲家安装
  4. 无论您执行了前面的哪一个步骤。此时,您将有许多新的配置文件配置/.它们包含Symfony定义的默认配置,因此必须将原始文件签入ob娱乐下载应用程序/配置/并在新文件中进行所需的更改。Flex配置在配置文件中不使用后缀,所以旧的应用程序/配置/ config_dev.yml配置/包/ dev / * .yaml等。
  5. 最重要的配置文件是应用程序/配置/ services.yml,现位于配置/ services.yaml.的内容默认的服务。yaml文件然后添加您自己的服务配置。稍后您可以重新查看此文件,因为多亏了Symfony的ob娱乐下载自动装配功能您可以删除大部分服务配置。

    请注意

    确保您以前的配置文件没有进口声明,指向已加载的资源内核:configureContainer ()内核:configureRoutes ()方法。

  6. 移动剩下的app /内容如下(在此之后,删除app /目录):

    • 应用程序/资源/视图/->模板/
    • 应用程序/资源/翻译/->翻译/
    • 应用程序/资源/ < BundleName > /视图/->模板/包/ < BundleName > /
    • 剩下的应用程序/资源/文件- >src /资源/
  7. 将原始PHP源代码从src / AppBundle / *,除非bundle特定的文件(比如AppBundle.php而且DependencyInjection /),src /.删除src / AppBundle /

    除了移动文件外,还要更新自动装载而且autoload-dev的值composer.json文件如本例所示使用App \而且应用程序测试\ \作为应用程序名称空间(高级ide可以自动执行此操作)。

    如果您使用多个包来组织代码,则必须将代码重新组织为src /.例如,如果你有src / UserBundle /控制器/ DefaultController.php而且src / ProductBundle /控制器/ DefaultController.php,你可以把它们移到src /控制器/ UserController.php而且src /控制器/ ProductController.php

  8. 移动公共资产,如图像或编译的CSS/JS文件,从公共/ src / AppBundle /资源/公共/(如。公共/图像/).
  9. 将资产的源(例如SCSS文件)移动到资产/和使用Webpack安可管理和编译。
  10. 创建新的公共/ index . php前端控制器复制Symfonob娱乐下载y的index.php源代码如果你在你的web / app.php而且web / app_dev.php文件,将这些更改复制到新文件中。现在可以删除旧的web /dir。
  11. 更新bin /控制台脚本复制Symfonob娱乐下载y的bin/控制台源代码并根据您原来的控制台脚本更改任何内容。
  12. 删除bin ob娱乐下载/ symfony_requirements脚本,如果您需要替换它,请使用新的ob娱乐下载Symfony需求检查器
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。