升级主要Symfony版本的第三方Bundleob娱乐下载
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。
读本页的更新版本用于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 14
执行"composer require——dev symfony/phpunit-bridge"命令后使用ob娱乐下载$/ bin / 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娱乐下载\组件\OptionsResolver\OptionsResolver;如果(!method_exists (OptionsResolver::类,“setDefined”)) {//旧的OptionsResolver API的代码}其他的{//新的OptionsResolver API的代码}
提示
有一种情况,你实际上可以依赖ob娱乐下载Symfony \组件\ HttpKernel \内核:VERSION_ID
常量:当试图检测版本时ob娱乐下载symfony / http-kernel
组件,因为这个常量就是在组件中定义的。