升级主要版本(例如2.7.0到3.0.0)

编辑本页

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

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

升级主要版本(例如2.7.0到3.0.0)

每隔几年,Symfony就会发布一ob娱乐下载个新的主要版本(第一个数字会改变)。这些版本的升级是最棘手的,因为它们允许包含BC中断。然而,Symfonob娱乐下载y试图使这个升级过程尽可能顺利。

这意味着您可以在主要版本实际发布之前更新大部分代码。这叫做编写代码未来的兼容

升级主要版本有以下几个步骤:

  1. 让您的代码免于弃用
  2. 通过Composer更新到新的主版本
  3. 更新代码以使用新版本

1)让你的代码免于弃用

在主要版本的生命周期中,会添加新特性,改变方法签名和公共API使用。然而,小版本不应包含任何向后不兼容的更改。要做到这一点,“旧的”(例如函数,类等)代码仍然可以工作,但被标记为弃用,表示将来会删除/更改,并建议您停止使用。

当主要版本发布时(例如3.0.0),所有已弃用的特性和功能都将被删除。所以,只要你已经更新了你的代码,停止使用这些在主版本(例如2.8.*)之前的最后一个版本中被弃用的功能,你应该能够毫无问题地升级。

为了帮助您做到这一点,当您最终使用了已弃用的特性时,就会触发弃用通知。中访问应用程序时开发环境在浏览器中,这些通知显示在web开发工具栏中:

当然,您最终还是希望停止使用已弃用的功能。有时,这很容易:警告可能会告诉您需要更改哪些内容。

但其他时候,警告可能不清楚:某个地方的设置可能会导致更深的类触发警告。在这种情况下,Symfonyob娱乐下载尽力给出一个明确的信息,但您可能需要进一步研究该警告。

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

一旦所有弃用警告消失,您就可以更有信心地升级了。

PHPUnit中的弃用

当您使用PHPUnit运行测试时,不会显示弃用通知。为了帮助您,Symfony提供了PHob娱乐下载PUnit桥接。这个桥将在测试报告的末尾向您展示所有弃用通知的漂亮摘要。

你所需要做的就是安装PHPUnit桥接:

1
$ composer require——开发symob娱乐下载fony/phpunit-bridge

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

12 3 4 5 6 7 8 9 10 11 12 13
$ phpunit…OK(10个测试,20个断言)剩余的弃用通知(6)“请求”服务已弃用,将在3.0中删除。为Symfony\Component\ob娱乐下载HttpFoundation\Request添加一个typehint到你的控制器参数来检索请求:6x 3x在PageAdminTest::testPageShow从Symfony\Cmf\SimpleCmsBundle\Tests\WebTest\Admin 2x在PageAdminTest::testPageList从Symfony\Cmf\SimpleCmsBundle\Tests\WebTest\Admin 1x在PageAdminTest::testPageEdit从Symfony\Cmf\SimpleCmsBundle\Tests\WebTest\Admin

一旦你把它们都修好了,命令就以0(成功)你就完成了!

有时,你不能修复所有的弃用(例如,在2.6中已经弃用的某些东西,而你仍然需要支持2.3)。在这些情况下,您仍然可以使用桥来修复尽可能多的弃用,然后切换到弱测试模式以使您的测试再次通过。方法可以做到这一点ob娱乐下载SYMFONY_DEPRECATIONS_HELPERenv变量:

1 2 3 4 5 6 7 8
<!——phpunit.xml.dist——><phpunit)><!——……--><php><env的名字“ob娱乐下载SYMFONY_DEPRECATIONS_HELPER”价值“弱”/>php>phpunit)>

(您也可以执行命令像ob娱乐下载SYMFONY_DEPRECATIONS_HELPER =弱phpunit)).

2)通过Composer更新到新的主要版本

一旦代码不再弃用,您就可以通过Composer通过修改您的代码来更新Symfony库ob娱乐下载composer.json文件:

1 2 3 4 5 6 7 8
“…”“…”“需要”: {“ob娱乐下载symfony / symfony”3.0“。*”},“…”“…”

接下来,使用Composer下载新版本的库:

1
$ composer update ob娱乐下载symfony/symfony

依赖错误

如果您得到一个依赖项错误,这可能仅仅意味着您也需要升级其他Symfony依赖项。ob娱乐下载在这种情况下,请尝试以下命令:

1
$ composer更新symfonob娱乐下载y/symfony -with-dependencies

这个更新ob娱乐下载symfony / symfony而且所有它所依赖的包,其中将包括几个其他包。通过使用严格的版本约束composer.json,您可以控制每个库升级到什么版本。

如果还是不行,你的composer.json文件可能会为不兼容新Symfony版本的库指定一个版本。ob娱乐下载在这种情况下,将该库更新到中较新的版本composer.json也许能解决问题。

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

升级其他软件包

您可能还想升级其余的库。如果你做得很好版本约束composer.json,你可以通过运行:

1
$ composer更新

谨慎

小心,如果你有一些不具体的版本约束在你的composer.json(如。dev-master),这可能会将一些非symfony库升级到包含破坏向后兼容性更ob娱乐下载改的新版本。

3)更新你的代码以适应新版本

现在很有可能你已经完成了!然而,下一个主要版本五月也包含新的BC断裂作为BC层并不总是可能的。确保你读了UPGRADE-X.0.md(其中X是新的主版本)包含在Symfony存储库中,用于您需要注意的任何BC中断。ob娱乐下载

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