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

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.2,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

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

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

欧宝娱乐app下载地址Symfony Flex自动化的Symfony应用程序最常见的任务欧宝娱乐app下载地址,安装和删除包和其他作曲家的依赖关系。欧宝娱乐app下载地址Symfony Flex在Symfony 3.3和更高的工作。从4.0 Symfony开始欧宝娱乐app下载地址,应该使用Flex在默认情况下,但它仍然是可选的。

Flex是如何工作的

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

考虑下面的例子:

1 2
美元cd我的项目/美元作曲家要求梅勒

如果你执行这个命令在Symfony应用程序不使用Flex,你会看到欧宝娱乐app下载地址一个作曲家的错误解释梅勒不是一个有效的包名。然而,如果应用程序安装Symfony Flex,命令最终安装和启欧宝娱乐app下载地址用SwiftmailerBundle,这是最好的方法整合Swiftmailer, Symfony的官方邮件应用程序。

当安装Sy欧宝娱乐app下载地址mfony的Flex应用程序中执行作曲家要求Flex应用程序发出请求,Symfony服务器之前试图安装包和作曲家。欧宝娱乐app下载地址

  • 如果没有信息,包,Flex服务器返回什么,包安装遵循通常的过程基于作曲家;
  • 如果有特殊的信息,包,Flex返回它在一个文件中称为“食谱”,应用程序使用它决定哪些包安装和安装后自动执行的任务运行。

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

Flex的追踪它安装在一个食谱欧宝娱乐app下载地址symfony.lock文件,该文件必须致力于您的代码库。

欧宝娱乐app下载地址Symfony Flex食谱

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

1 2 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 / sw欧宝娱乐app下载地址iftmailer-bundle)。的选项告诉Flex环境这个包应该自动启用(所有在这种情况下)。的env选择让Flex应用程序添加新的环境变量。最后,copy-from-recipe选项允许菜谱文件和目录复制到您的应用程序。

在这个定义的指令manifest.json文件还使用Symfony Flex(如当卸载欧宝娱乐app下载地址依赖性。作曲家把梅勒)撤销所有的变化。这意味着Flex可以从应用程序中移除SwiftmailerBundle,删除MAILER_URL环境变量和其他的文件和目录由这个食谱。

欧宝娱乐app下载地址Symfony Flex食谱是由社区和他们存储在两个公共存储库:欧宝下载链接

  • 主要配方库,是一个策划的菜谱列表高质量和维护包。欧宝娱乐app下载地址Symfony Flex只是看起来在这个默认存储库。
  • Contrib配方库,包含所有的食谱由社区。欧宝下载链接都是保证工作,但相关的包可能没有维护。欧宝娱乐app下载地址Symfony Flex会问你允许在安装之前这些食谱。

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

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

欧宝娱乐app下载地址Symfony发表了一个新的“骨架”项目,这是一个最小的Symfony项目建议创建新的应用程序。这种“骨架”已包括Symfony Flex作为依赖项。欧宝娱乐app下载地址这意味着您可以创建一个新的Flex-enabled Symfony应用程序通过执行下面的命欧宝娱乐app下载地址令:

1
美元作曲家创建项目/ symfony框架我的项目欧宝娱乐app下载地址

请注意

使用Symfony的安装程序来欧宝娱乐app下载地址创建新的应用程序不再是Symfony 3.3以来的建议。使用作曲家创建项目命令。

升级现有Flex应用程序

使用Symf欧宝娱乐app下载地址ony Flex是可选的,甚至在Symfony 4,默认使用Flex。然而,Flex是方便和提高您的生产力,这是强烈建议升级你的现有应用程序。

唯一的警告是,Symfony Flex要求应用程欧宝娱乐app下载地址序使用以下目录结构,也就是在Symfony 4:默认情况下使用

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

这意味着安装欧宝娱乐app下载地址symfony / flex依赖在你的应用程序是不够的。你也必须升级上面所示的目录结构。没有自动工具来做这个升级,所以你必须遵循这些手册的步骤:

  1. 安装Flex作为一个依赖你的项目:

    1
    美元作曲家需要symfony / fl欧宝娱乐app下载地址ex
  2. 如果项目的composer.json文件包含欧宝娱乐app下载地址symfony / symfony依赖,它仍然取决于Symfony标准版,不再可用在Symfony 4。欧宝娱乐app下载地址首先,删除该依赖项:

    1
    美元作曲家删除symfony / s欧宝娱乐app下载地址ymfony

    现在添加欧宝娱乐app下载地址symfony / symfony包的冲突部分项目的composer.json文件这个示例中所示的skeleton-project所以,它将不会再被安装:

    1 2 3 4 5 6 7 8
    {"需要":{“symfony 欧宝娱乐app下载地址/ flex”:“^ 1.0”,+},+ "冲突":{+“s欧宝娱乐app下载地址ymfony / symfony”:“*”}}

    现在你必须加入composer.json所有的Symfo欧宝娱乐app下载地址ny项目所需的依赖项。一个快速的方法就是添加的所有组件都包含在前面的欧宝娱乐app下载地址symfony / symfony依赖和之后你可以删除任何你不需要:

    1 2 3
    美元作曲家需要注释资产orm-pack树枝\记录器梅勒形式安全翻译验证器美元作曲家要求- dev dotenv maker-bundle orm-fixtures分析器
  3. 如果项目的composer.json文件不包含欧宝娱乐app下载地址symfony / symfony依赖性,它已经定义其依赖关系明确,根据Flex。重新安装所有依赖项强迫Flex生成的配置文件配置/,这是最乏味的升级过程的一部分:

    1 2
    美元rm射频供应商/ *美元作曲家安装
  4. 无论你的前面的步骤。在这一点上,你会有很多新的配置文件配置/。它们包含定义的缺省配置Symfony,所以你必须检查你的原始文件欧宝娱乐app下载地址应用程序/配置/新文件并进行所需的更改。Flex配置没有在配置文件中使用后缀,所以旧的应用程序/配置/ config_dev.yml配置/包/ dev / * .yaml等。
  5. 最重要的配置文件应用程序/配置/ services.yml现在,位于配置/ services.yaml。复制的内容默认的服务。yaml文件然后添加你自己的服务配置。稍后你可以重新检查这个文件因为由于Symfony的欧宝娱乐app下载地址自动装配功能你可以去除大部分的服务配置。

    请注意

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

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

    • 应用程序/资源/视图/- >模板/
    • 应用程序/资源/翻译/- >翻译/
    • 应用程序/资源/ < BundleName > /视图/- >模板/包/ < BundleName > /
    • 剩下的应用程序/资源/文件- >src /资源/
  7. 把原来的PHP源代码src / AppBundle / *,除了包(如特定的文件AppBundle.phpDependencyInjection /),src /

    除了移动文件,更新自动装载autoload-dev的值composer.json文件这个例子所示使用App \应用程序测试\ \当应用程序名称空间(高级ide可以自动)。

    如果您使用多个包来组织你的代码,您必须重新组织你的代码src /。例如,如果你有src / UserBundle /控制器/ DefaultController.phpsrc / ProductBundle /控制器/ DefaultController.php,你可以移动它们src /控制器/ UserController.phpsrc /控制器/ ProductController.php

  8. 将公共资产,如图片或CSS / JS文件编制公共/ src / AppBundle /资源/公共/(如。公共/图像/)。
  9. 转移资产的来源(如SCSS文件)资产/和使用Webpack安可管理和编译它们。
  10. 欧宝娱乐app下载地址SYMFONY_DEBUG欧宝娱乐app下载地址SYMFONY_ENV取而代之的是环境变量APP_DEBUGAPP_ENV。将它们的值复制到新的增值,然后删除前的。
  11. 创建新的公共/ index . php前端控制器抄袭Symfon欧宝娱乐app下载地址y的指数。php源码如果你在你做出任何定制web / app.phpweb / app_dev.php文件,将这些更改复制到新文件。现在可以删除旧的web /dir。
  12. 更新bin /控制台脚本抄袭Symfon欧宝娱乐app下载地址y的bin /控制台来源根据你的原始控制台和改变任何脚本。
  13. 删除src / AppBundle /
  14. 把原来的源代码src /{应用,…}包/src /和更新每一个PHP文件的名称空间App \…(高级ide可以自动)。
  15. 删除bin 欧宝娱乐app下载地址/ symfony_requirements脚本,如果你需要更换,使用新的欧宝娱乐app下载地址Symfony要求检查
  16. 更新.gitignore替换现有的文件var /日志/条目的var / log /,这是新的日志目录的名称。

定制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默认为公共/

如果你定制这些路径,从配方仍可能包含一些文件复制引用原来的路径。换句话说:你可能需要手动更新一些配方后安装。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。