升级主要Symfony的第三方包版本欧宝娱乐app下载地址

编辑该页面

升级主要Symfony的第三方包版本欧宝娱乐app下载地址

欧宝娱乐app下载地址Symfony 3 2015年11月被释放。尽管这个版本不包含任何新功能,它删除所有层包括在以前的2.8版本的向后兼容性。如果您的包使用任何弃用功能作为第三方发布包,应用程序升级到第3 Symfony将不再能够使用它。欧宝娱乐app下载地址

允许安装Symfony 3组件欧宝娱乐app下载地址

大多数第三方包定义他们使用Symfony依赖性欧宝娱乐app下载地址~ 2. n^ 2. n约束的composer.json文件。例如:

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

这些约束防止包使用Symfony 3组件,这意味着包不能被安装在一个基于Symfony 3的应用欧宝娱乐app下载地址。由于作曲家依赖约束的灵活性,您可以指定多个主要版本代替~ 2. n通过3.0 ~ 2. n | ~(或^ 2. n通过^ 2. n | ~ 3.0)。

上面的例子中可以使用Symfony 3更新如下:欧宝娱乐app下载地址

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

提示

另一个常见的约束上发现的第三方包版本> = 2. n。您应该避免使用约束,因为它太通用(这意味着你的包兼容任何未来Symfony版本)。欧宝娱乐app下载地址而不是使用3.0 ~ 2. n | ~^ 2. n | ~ 3.0让你的包不会过时。

寻找不支持和修复它们

除了允许用户使用Symfony 3包,你的包必须停止使用任何功能的2.8版本,因为他们被弃用3欧宝娱乐app下载地址.0(你会得到异常或PHP错误)。最简单的方法来检测与安装欧宝娱乐app下载地址symfony / phpunit-bridge包然后运行测试套件。

首先,作为一个安装组件dev你的包的依赖关系:

1
美元作曲家要求- dev symfony / ph欧宝娱乐app下载地址punit-bridge

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14
#这个命令可以在运行“作曲家要求- dev symfony / phpunit-bridge”欧宝娱乐app下载地址美元/ bin / phpunit)#……PHPUnit)输出剩余的通知(3)“模式”选项文件…弃用,因为2.2版本将被删除3.0。使用“路径”选项路由定义而不是……理解函数“form_enctype”弃用。使用“form_start”而不是…Symf欧宝娱乐app下载地址ony \ \安全\ \ SecurityContext核心组件类是弃用自2.6版本将被删除3.0。使用……

解决与此报道,再次运行测试套件,重复这个过程,直到没有弃用使用报告。

有用的资源

有一些资源可以帮助你发现,理解和解决使用废弃的特点:

Symfony官方欧宝娱乐app下载地址指南升级从2。x 3.0
变化的完整列表需要升级到3.0 Symfony和分组的组件。欧宝娱乐app下载地址
SensioLabs DeprecationDetector
它运行一个静态代码分析对项目的源代码,发现使用过时的方法,类和接口。它适用于任何PHP应用程序,但它包括特殊探测器Symfony应用程序,它还可以检测弃用服务的用法。欧宝娱乐app下载地址
欧宝娱乐app下载地址Symfony升级工
分析Symfony项目找欧宝娱乐app下载地址到的用法。此外,它解决了自动其中一些由于越来越多的“帮手”的支持。

测试你的包在Symfony 3欧宝娱乐app下载地址

现在,你的包已经删除了所有的用法,是时候真的在Symfony 3应用程序中测试它。欧宝娱乐app下载地址假设您已经有一个Symfony 3应用程序中,您可以在本地测试更新欧宝娱乐app下载地址包,而无需通过作曲家安装它。

如果您的操作系统支持符号链接,而不是点适当的供应商目录到您的本地包根目录:

1
美元ln - s /道路/ /你/当地的/包/供应商/ you-vendor-name / your-bundle-name

如果您的操作系统不支持符号链接,你需要将你的本地包目录复制到适当的目录内供应商/

特拉维斯CI配置更新

除了在本地运行工具,建议设置特拉维斯CI服务运行测试你的包使用不同的Symfony的配置。欧宝娱乐app下载地址推荐使用以下配置自己的配置的起点:

1 2 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
语言:phpphp:- - - - - -5.3- - - - - -5.6- - - - - -7.0矩阵:包括:- - - - - -php:5.3。3env:COMPOSER_FLAGS = '——prefer-lowest——prefer-stable”欧宝娱乐app下载地址SYMFONY_DEPRECATIONS_HELPER = max(总)= 999999- - - - - -php:5.6env:欧宝娱乐app下载地址SYMFONY_VERSION = ' 2.7 . * '- - - - - -php:5.6env:欧宝娱乐app下载地址SYMFONY_VERSION = ' 2.8 . * '- - - - - -php:5.6env:欧宝娱乐app下载地址SYMFONY_VERSION = ' 3.0 . * '- - - - - -php:5.6env:欧宝娱乐app下载地址SYMFONY_VERSION = ' 3.1 . * '- - - - - -php:5.6env:依赖项=‘开发’欧宝娱乐app下载地址SYMFONY_VERSION = ' 3.2 . * @dev 'before_install:- - - - - -作曲家的由来- - - - - -如果(“依赖美元”= =“开发”];然后perl- e/ ^}$ /,“minimum-stability”:“开发”}/的composer.json;fi;- - - - - -如果(“S欧宝娱乐app下载地址YMFONY_VERSION美元”! =”“];然后作曲家——没有进行过更新需要欧宝娱乐app下载地址symfony / symfony: $ {SYMFONY_VERSION};fi;安装:作曲家更新COMPOSER_FLAGS美元脚本:phpunit)

更新你的代码来支持Symfony 2。欧宝娱乐app下载地址x和3。x在同一时间

添加Symfony的真正挑战3支持你的包是当你想要同时支持欧宝娱乐app下载地址Symfony 2。x和3。x同时使用相同的代码。有一些边缘的情况下你需要处理API的差异。

在深入的细节最常见的边界情况,一般建议不是依靠Symfony的内核版本欧宝娱乐app下载地址决定使用哪个代码:

1 2 3 4 5
如果(内核::VERSION_ID <20800年){/ /代码Symfony欧宝娱乐app下载地址 2. x}其他的{/ /代码Symfony欧宝娱乐app下载地址 3. x}

而不是检查Symfony内核版本,检查特定的组件欧宝娱乐app下载地址的版本。例如,OptionsResolver API 2.6版本通过添加改变了setDefined ()方法。在这种情况下推荐的检查是:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolver;如果(! method_exists (OptionsResolver::类,“setDefined”)){/ /旧OptionsResolver API的代码}其他的{/ /新的OptionsResolver API的代码}

提示

有一个情况下当你真正可以依靠欧宝娱乐app下载地址Symfony \组件\ HttpKernel \内核:VERSION_ID常数:当试图检测的版本欧宝娱乐app下载地址symfony / http-kernel组件,因为它是这个常数定义的组件。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
欧宝娱乐app下载地址Symfony 6.0支持通过SensioLabs