升级主要Symfony版本的第三方Bundleob娱乐下载

编辑本页

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

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

升级主要Symfony版本的第三方Bundleob娱乐下载

ob娱乐下载Symfony 3于2015年11月发布。尽管这个版本不包含任何新特性,但它删除了之前2.8版本中包含的所有向后兼容层。如果您的包使用了任何已弃用的特性,并且它作为第三方包发布,那么升级到Symfony 3的应用程序将不再能够使用它。ob娱乐下载

允许安装Symfony 3组件ob娱乐下载

类定义了它们的Symfony依赖关系ob娱乐下载~ 2。N^ 2。N限制条件composer.json文件。例如:

1 2 3 4 5 6 7
“需要”: {“ob娱乐下载symfony / framework-bundle”“~ 2.7”“ob娱乐下载symfony /仪”“~ 2.7”“ob娱乐下载symfony /验证器”“~ 2.7”}}

这些约束阻止bundle使用Symfony 3组件,因此不可能在基于Symfony 3的应用程序ob娱乐下载中安装它。由于Composer依赖约束的灵活性,这个问题非常容易解决。只是替换~ 2。N通过3.0 ~ 2. n | ~(或^ 2。N通过^ 2. n | ~ 3.0).

上面的例子可以更新到Symfony 3,如下所示:ob娱乐下载

1 2 3 4 5 6 7
“需要”: {“ob娱乐下载symfony / framework-bundle”“3.0 ~ 2.7 | ~”“ob娱乐下载symfony /仪”“3.0 ~ 2.7 | ~”“ob娱乐下载symfony /验证器”“3.0 ~ 2.7 | ~”}}

提示

第三方捆绑包上另一个常见的版本约束是> = 2。N.您应该避免使用该约束,因为它太通用了(这意味着您的包与任何未来的Symfony版本兼容)。ob娱乐下载而不是使用3.0 ~ 2. n | ~^ 2. n | ~ 3.0让您的捆绑包面向未来。

寻找弃用并修复它们

除了允许用户在Symfony 3中使用您的包外,您的包必须停止使用2.8版本中弃用的任何特性,ob娱乐下载因为这些特性在3.0中被删除了(您将得到异常或PHP错误)。检测已弃用的最简单方法是安装ob娱乐下载symfony / phpunit-bridge包然后运行测试套件。

首先,将组件安装为dev你的bundle的依赖关系:

1
创建symfony/phpunit-bridgob娱乐下载e

然后,运行你的测试套件,寻找PHPUnit测试报告后显示的弃用列表:

12 3 4 5 6 7 8 9 10 11 12 13
phpunit)#……PHPUnit)输出剩余的弃用通知(3)“模式”选项文件…自2.2版以来已弃用,并将被删除3.0.使用“路径”选项相反,路由定义…理解函数“form_enctype”弃用。使用“form_start”而不是...Symfob娱乐下载ony\Component\Security\Core\SecurityContext类自2.6版起已弃用,并将被移除3.0.使用……

修复报告的弃用,再次运行测试套件并重复此过程,直到没有报告弃用使用。

有用的资源

这里有一些资源可以帮助你检测、理解和修复已弃用功能的使用:

Symfony官方ob娱乐下载升级指南2。X到3.0
升级到Symfony 3.0所需更改的完整列表,并按组件分组。ob娱乐下载
SensioLabs DeprecationDetector
它对项目的源代码运行静态代码分析,以发现废弃方法、类和接口的用法。它适用于任何PHP应用程序,但它包含针对Symfony应用程序的特殊检测器,在这些检测器中,它还可以检测废弃服务的使用情况。ob娱乐下载
ob娱乐下载Symfony升级修复器
它通过分析Symfonyob娱乐下载项目来发现弃用。此外,由于支持的“修复器”列表不断增加,它自动解决了其中一些问题。

在Symfony 3中测试你的Bundleob娱乐下载

现在您的包已经删除了所有弃用项,是时候在Symfony 3应用程序中测试它了。ob娱乐下载假设您已经有一个Symfony 3应用程序,您可以在本地测试更新后ob娱乐下载的包,而不必通过Composer安装它。

如果您的操作系统支持符号链接,只需将适当的供应商目录指向您的本地bundle根目录:

1
Ln -s /path/to/your/当地的/包/供应商/ you-vendor-name / your-bundle-name

如果您的操作系统不支持符号链接,则需要将本地bundle目录复制到相应的目录中供应商/

更新Travis CI配置

除了在本地运行工具外,建议设置Travis CI服务,使用不同的Symfony配置运行您的包的测试。ob娱乐下载使用以下推荐的配置作为您自己配置的起点:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
语言:phpsudo:php:-5.3-5.6-7.0矩阵:包括:-php:5.3.3env:COMPOSER_FLAGS = '——prefer-lowest——prefer-stable”ob娱乐下载SYMFONY_DEPRECATIONS_HELPER =弱-php:5.6env:ob娱乐下载SYMFONY_VERSION = ' 2.7 . * '-php:5.6env:ob娱乐下载SYMFONY_VERSION = ' 2.8 . * '-php:5.6env:ob娱乐下载SYMFONY_VERSION = ' 3.0 . * '-php:5.6env:ob娱乐下载SYMFONY_VERSION = ' 3.1 . * '-php:5.6env:依赖项=‘开发’ob娱乐下载SYMFONY_VERSION = ' 3.2 . * @dev 'before_install:-作曲家的由来-如果“依赖美元”= =“开发”];然后perl- e/ ^} $ /,“minimum-stability”:“开发”}/的composer.json;fi;-如果“Sob娱乐下载YMFONY_VERSION美元”! =""];然后作曲家——没有进行过更新需要ob娱乐下载symfony / symfony: $ {SYMFONY_VERSION};fi;安装:作曲家更新COMPOSER_FLAGS美元脚本:phpunit)

更新代码以支持Symfony 2。ob娱乐下载X和3。x在同一时间

为您的包添加Symfony 3支持的真正挑战是当您希望同时ob娱乐下载支持Symfony 2时。X和3。X同时使用相同的代码。有一些边缘情况需要处理API差异。

在深入研究最常见的边缘情况的细节之前,一般的建议是不依赖Symfony内核版本ob娱乐下载决定使用哪个代码:

1 2 3 4 5
如果(内核::VERSION_ID <20800) {// Symfony 2ob娱乐下载.x的代码其他的// Symfony 3ob娱乐下载.x的代码

不要检查Symfony内核版本,而是检查特定组件ob娱乐下载的版本。例如,OptionsResolver API在2.6版本中添加了一个setDefined ()方法。在这种情况下,建议检查如下:

1 2 3 4 5 6 7
使用ob娱乐下载组件OptionsResolverOptionsResolver如果(!method_exists (OptionsResolver::类,“setDefined”)) {//旧的OptionsResolver API的代码其他的//新的OptionsResolver API的代码

提示

有一种情况,你实际上可以依赖ob娱乐下载Symfony \组件\ HttpKernel \内核:VERSION_ID常量:当试图检测版本时ob娱乐下载symfony / http-kernel组件,因为这个常量就是在组件中定义的。

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