14

我已经有正在运行的项目Symfony 2.0.10。但是现在我需要将它升级到Symfony 2.3。我知道需要更改一些代码以与最新版本兼容。有什么命令可以升级吗?或者升级的具体程序是什么?有没有可用的文件?

编辑:

我放了symfony 2.3 composer.json文件,在做的时候php composer.phar update我得到了这个错误。

Problem 1
    - symfony/symfony v2.3.1 requires symfony/icu >=1.0,<2.0 -> no matching package found.
    - symfony/symfony v2.3.0 requires symfony/icu >=1.0,<2.0 -> no matching package found.
    - Installation request for symfony/symfony 2.3.* -> satisfiable by symfony/symfony[v2.3.0, v2.3.1].

编辑2: 首先我得到了这个错误:

[InvalidArgumentException]                                                                                
  The dist file "app/config/parameters.yml.dist" does not exist. Check your dist-file config or create it.

所以我创建了parameters.yml.dist文件。现在我得到

PHP Fatal error:  Class 'Symfony\Component\ClassLoader\UniversalClassLoader' not found in /var/www/git/sample/app/autoload.php on line 6
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap handling the post-update-cmd event terminated with an exception

  [RuntimeException]                                     
  An error occurred when generating the bootstrap file.  
4

2 回答 2

16

升级信息

阅读symfony/symfony github 存储库中的升级指南:

存储库中还有更改日志:

备份您的项目!


使用作曲家升级

获取composer并将symfony 2.3 标准版的composer.json放入您的项目根目录。

现在composer update将项目的补丁作为工作目录运行。

-> 由于重大更改异常,您将面临一些异常。谷歌将帮助解决这些问题:)


个人经验

在我的遗留项目中,从 2.0 到 2.1 的最明显的 bc 中断是与表单生成器相关的,因为我必须更新每个表单。

之前(2.0)

use Symfony\Component\Form\FormBuilder;
public function buildForm(FormBuilder $builder, array $options)

之后(2.1+)

use Symfony\Component\Form\FormBuilderInterface;
public function buildForm(FormBuilderInterface $builder, array $options)
于 2013-06-19T12:28:56.327 回答
4

升级通常很简单,因为您只需根据标准分发和发布更新 composer.json 中的版本约束

php composer.phar update

但是 2.3 有一些向后兼容性中断。因此,请仔细阅读每个升级文档以进行必要的代码更改。

于 2013-06-19T12:28:11.020 回答