升级一个主要版本(例如5.4.0 6.0.0)

编辑该页面

升级一个主要版本(例如5.4.0 6.0.0)

每两年,Symfony释放一个新的ob娱乐下载主要版本发布(第一个数字的变化)。这些版本的升级是最棘手的,因为他们可以打破向后兼容性。然而,Symfonob娱乐下载y使得这个升级过程尽可能的平滑。

这意味着您可以更新你的代码实际上主要发布前发布。这就是所谓的让你的代码未来的兼容

主要有几个步骤升级版:

  1. 使代码弃用免费的;
  2. 更新到新的主要版本通过作曲家;
  3. 更新你的代码来使用新版本

1)使您的代码弃用免费的

生命周期中一个主要的版本,添加新功能和方法签名和公共API用法发生了变化。然而,小版本不应该包含任何向后不兼容的更改。为此,“老”(如函数、类等)代码仍然适用,但被标记为弃用,这表明它将被删除/改变未来,你应该停止使用它。

主要版本发布时(例如0),所有的弃用的特性和功能都被删除了。所以,只要你更新你的代码停止使用这些弃用功能主要(如之前在过去的版本。5.4 . *),你应该能够升级没有问题。这意味着你应该放在第一位升级到最后一个小版本(如5.4),这样您就可以看到所有的用法。

帮你找到的用法,通知触发当你最终使用过时的特性。当访问您的应用程序开发环境在您的浏览器中,这些通知web开发工具栏所示:

最后,你应该停止使用弃用功能。有时,警告可能会告诉你什么改变。

但其他时候,警告可能不清楚:某个设置可能会导致一个类更深的触发警报。在这种情况下,Symfonyob娱乐下载它最好给一个明确的信息,但是你可能需要进一步研究警告。

有时,警告可能来自第三方库或者你使用包。如果这是真的,很有可能那些用法已经更新。在这种情况下,升级库来修复它们。

一旦所有的弃用警告,您可以升级和更多的信心。

与此同时在PHPUnit)

当您运行测试时使用PHPUnit),没有弃用通知所示。帮助你在这里,Symfony提供了Pob娱乐下载HPUnit)桥。这座桥将向您展示一个很好的总结所有弃用通知的最后测试报告。

所有您需要做的就是安装PHPUnit)桥:

1
美元作曲家要求- dev symfony / phob娱乐下载punit-bridge

现在,您可以开始修复通知:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
#这个命令可以在运行“作曲家要求- dev symfony / phpunit-bridge”ob娱乐下载美元/ bin / phpunit)…OK(10测试,20断言)剩余的通知(6)“请求”服务是弃用,将被删除3.0。添加一个类型提示ob娱乐下载Symfony \ HttpFoundation \ \组件请求来检索请求,控制器参数:6 x 3 xPageAdminTest::从Symfony testPageSob娱乐下载how \ Cmf \ WebTest \ \ SimpleCmsBundle \测试管理2 xPageAdminTest::从Symfony testPageLob娱乐下载ist \ Cmf \ WebTest \ \ SimpleCmsBundle \测试管理1 xPageAdminTest::从Symfony testPageEob娱乐下载dit \ Cmf \ SimpleCmsBundle \ \ WebTest \管理测试

一旦固定,命令结尾0(成功)和你做!

谨慎

你可能会看到很多不支持对本地返回类型不兼容。看到添加本地返回类型在解决这些用法指导。

有时候,你不能解决所有的用法(如5.4中被弃用的东西,你仍然需要支持5.3)。在这些情况下,您仍然可以使用桥修复尽可能多的用法,然后让更多的人让你再次测试通过。为此,您可以使用ob娱乐下载SYMFONY_DEPRECATIONS_HELPERenv变量:

1 2 3 4 5 6 7 8
< !——phpunit.xml。区域- - ><phpunit)>< !——……- - ><php><env的名字=“ob娱乐下载SYMFONY_DEPRECATIONS_HELPER”价值=“马克斯(总)= 999999”/ >< /php>< /phpunit)>

您还可以执行命令:

1
美元ob娱乐下载php SYMFONY_DEPRECATIONS_HELPER = max(总)= 999999 / bin / phpunit)

2)更新到新的主要版本通过作曲家

一旦你的代码是弃用免费的,你可以更新Symfony通过作曲家通过修改你的图书馆ob娱乐下载composer.json文件并开始改变的所有库ob娱乐下载symfony /新的主要版本:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
{“……”:“……”,"require": {5.4ob娱乐下载——“symfony /缓存”:“。*”,6.0ob娱乐下载 +“symfony /缓存”:“。*”,5.4ob娱乐下载——“symfony / config”:“。*”,6.0ob娱乐下载 +“symfony / config”:“。*”,5.4ob娱乐下载——“symfony /控制台”:“。*”,6.0ob娱乐下载 +“symfony /控制台”:“。*”,“…”:“……”,“……”:“几个库从symfony /遵循自己的版本控制方案。ob娱乐下载您不需要更新这些版本:你可以随时升级他们独立”、“symfony / monolog-bundle”:“^ 3.5“}”,…ob娱乐下载”:“……”,}

在你的底部composer.json的文件,额外的你可以找到一个数据块的Symfony的版本。ob娱乐下载也一定要升级。例如,更新它6.0 . *升级到Symfony 6.0ob娱乐下载:

1 2 3 4 5 6 7
“额外”:{" symfob娱乐下载ony ": {“allow-contrib”:假的,——“需要”:“5.4 . *”6.0 +“要求”:“。*”}}

接下来,使用作曲家下载新版本的库:

1
美元作曲家更新“ob娱乐下载symfony / *”

依赖错误

如果你得到一个依赖错误,它可能意味着你还需要升级Symfony的其他库依赖库。ob娱乐下载允许通过——with-all-dependencies国旗:

1
美元作曲家更新“ob娱乐下载symfony / *”——with-all-dependencies

这个更新ob娱乐下载symfony / *所有依赖包,这些包。通过严格的版本约束composer.json,你可以控制每个库升级版本。

如果这还不起作用,你composer.json文件可以指定一个版本库,与新的Symfony版本不兼容。ob娱乐下载在这种情况下,图书馆一个新版本的更新composer.json可能会解决这个问题。

或者,你可能有更深层次的问题,不同的其他库的库依赖于冲突的版本。调试检查你的错误消息。

另一个可能发生的问题是项目依赖项可以安装在您的本地计算机上而不是在远程服务器上。这通常发生在当PHP版本在每台机器上都是不同的。解决方案是增加的平台配置选项的作曲家。json的文件定义的最高允许PHP版本的依赖关系(设置为服务器的PHP版本)。

升级其他包

你也可以升级你的库。如果你已经做了很好的工作版本约束composer.json你可以安全地通过运行:

1
美元作曲家更新

谨慎

当心,如果你有一些不具体的版本约束在你的composer.json(如。dev-master),这可能一些non-Symfony库升级到新版本包含打破向后ob娱乐下载兼容性的变化。

3)更新菜谱

随着时间的推移,特别是当你升级到一个新版本的库的更新版本配方可能是可用的。这些更新是非常小的,如新评论在配置文件中,但这是一个好主意保持你的文件同步的菜谱。

ob娱乐下载Symfony Flex提供一些命令来帮助升级你的食谱。一定要你在工作开始前提交任何无关的修改:

1.18

食谱:更新命令是在Symfony Flex 1.18中引入的。ob娱乐下载

1 2 3 4 5 6 7 8 9 10 11
#选择更新过时的配方美元作曲家食谱:更新#更新特定的配方美元symfony / framework-bundob娱乐下载le作曲家食谱:更新#看到所有已安装的食谱的列表和更新可用美元作曲家的食谱#看到详细信息特定的食谱美元symfony / framewoob娱乐下载rk-bundle作曲家食谱

食谱:更新命令是明智的:它看着食谱之间的差别,当你安装最新版本。然后创建一个补丁应用到你的应用程序。如果有任何冲突,你可以像正常的解决它们git冲突和提交像正常。

4)使用新版本更新你的代码

在一些罕见的情况下,下一个主要版本可能包含打破向后兼容性。确保你读了UPGRADE-X.0.md(其中X是新的主要版本)包含在公元前的Symfony库打破,你需要注意的。ob娱乐下载

升级到Symfony 6:ob娱乐下载添加本地返回类型

ob娱乐下载Symfony 6与原生PHP返回类型(几乎所有)方法。

在PHP中,如果家长有一个返回类型声明,任何类实现或重写方法必须返回类型。但是,您可以添加一个返回类型父前添加一个。这意味着,重要的是要将原生PHP返回类型添加到您的类之前升级到6.0 Symfony。ob娱乐下载否则,你会不兼容的申报错误。

启用调试模式时(通常在开发和测试环境中),Symfony会触发不支持对每一个不兼容的方法声明。ob娱乐下载例如,用户界面:将getRoles ()方法将有一个数组在Symfony 6返回类型。ob娱乐下载在Syob娱乐下载mfony 5.4中,你会得到一个弃用注意到这一点,你必须添加返回类型声明将getRoles ()方法。

帮助,Symfony提供了一个脚本,该ob娱乐下载脚本可以自动添加这些返回类型。确保您安装了ob娱乐下载symfony /欢心组件。安装后,生成一个完整的类图使用作曲家和运行脚本迭代类映射并修复任何不兼容的方法:

1 2 3 4 5 6 7
#确保“exclude-from-classmap”不是“composer.json”填写。然后把自动装卸机:#“o”很重要!这迫使作曲家找到所有类美元作曲家dump-autoload - o#补丁所有不兼容的方法声明美元/供应商/ bin / patch-type-declarations

提示

此功能不仅限于Symfony包。ob娱乐下载它还将帮助您在您的项目中添加类型和准备其他依赖项。

这个脚本可以修改使用的行为ob娱乐下载SYMFONY_PATCH_TYPE_DECLARATIONSenv var。这个env var是url编码的值(例如param1 = value1¶m2 = value2),可用以下参数:

使修复返回类型,必须之一:

  • 2添加所有可能的返回类型(默认情况下,推荐应用程序);
  • 1只返回类型添加到测试,最终,内部或私有方法;
  • phpdoc只添加@returndocblock注释不兼容的方法,或# (\ ReturnTypeWillChange)如果它是由PHP引擎引发的。
php
目标版本的PHP——如。7.1不生成“对象”类型(在7.2中引入了)。这个默认的PHP版本在运行脚本时使用。
的用法
设置为0禁用的用法。否则,弃用注意当一个孩子类错过一个返回类型,而家长声明了一个@return注释(默认为1)。

如果有具体的文件应该被忽略,你可以设置ob娱乐下载SYMFONY_PATCH_TYPE_EXCLUDEenv var正则表达式。这个regex将匹配的完整路径类和每个匹配的路径将被忽略。ob娱乐下载SYMFONY_PATCH_TYPE_EXCLUDE = " /测试\ /设备\ / /”)。类的供应商/目录总是忽略。

提示

脚本并不关心代码风格。运行您的代码风格固定器,或PHP CS工phpdoc_trim_consecutive_blank_line_separation,no_superfluous_phpdoc_tagsordered_imports规则,修补后的类型。

开放源代码包和包需要更加谨慎和添加返回类型,添加一个返回类型部队所有用户添加返回类型来扩展这个类。推荐的方法是使用一个两步的过程:

  1. 首先,创建一个较小的版本(即不向后兼容优惠),您可以在其中添加类型可以安全地引入和添加@returnPHPDoc到所有其他方法:

    1 2 3 4 5 6
    #添加类型声明所有内部,最终测试和私有方法。#更新“php”参数,以匹配您的最低要求php版本美元ob娱乐下载SYMFONY_PATCH_TYPE_DECLARATIONS =“力= 1 php = 7.4”/供应商/ bin / patch-type-declarations#添加PHPDoc吃剩的公共和保护方法美元ob娱乐下载SYMFONY_PATCH_TYPE_DECLARATIONS =“力= phpdoc&php = 7.4”/供应商/ bin / patch-type-declarations

    运行脚本后,检查你的类和添加更多@returnPHPDoc失踪的地方。不支持和补丁脚本工作纯粹基于PHPDoc信息。这个版本的用户会弃用通知告诉他们从你的包丢失的返回类型添加到他们的代码。

    如果你不需要任何PHPDoc和你所有的方法声明已经与Symfony兼容,您可以安全地允许的ob娱乐下载^ 6.0Symfony的ob娱乐下载依赖性。否则,你必须继续(2)。

  2. 创建一个新的主要版本(即。向后兼容性优惠),您可以在其中添加类型所有方法:

    1 2
    #更新“php”参数,以匹配您的最低要求php版本美元ob娱乐下载SYMFONY_PATCH_TYPE_DECLARATIONS =“力= 2 php = 7.4”/供应商/ bin / patch-type-declarations

    现在,您可以安全地允许^ 6.0Symfony的ob娱乐下载依赖性。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
ob娱乐下载Symfony 6.2支持通过苏禄人
ob娱乐下载Symfony 6.2支持通过Les-Tilleuls.coop