php - 将 Symfony 4.3.9 升级到 4.4.1/5.0 后的弃用警告

标签 php symfony composer-php

我有一个免弃用的 Symfony 3.4.9 安装。所以我把固件升级到了4.1.1。现在我收到了 9 个来自供应商库的弃用警告:

  • 创建 Doctrine\ORM\Mapping\UnderscoreNamingStrategy 而不让它知道数字已被弃用,并将在 Doctrine ORM 3.0 中删除。
  • “Symfony\Component\HttpKernel\EventListener\ExceptionListener”类自 Symfony 4.4 起已被弃用,请改用“ErrorListener”。
  • Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory 类自 Doctrine/persistence 1.3 以来已被弃用,并将在 2.0 中删除。使用\Doctrine\Persistence\Mapping\AbstractClassMetadataFactory 代替。
  • Doctrine\Common\Persistence\Mapping\RuntimeReflectionService 类自学说/持久性 1.3 以来已被弃用,并将在 2.0 中删除。使用\Doctrine\Persistence\Mapping\RuntimeReflectionService 代替。
  • Doctrine\Common\Persistence\ObjectManager 类自 Doctrine/persistence 1.3 以来已被弃用,并将在 2.0 中删除。使用\Doctrine\Persistence\ObjectManager 代替。
  • Doctrine\Common\Persistence\ObjectRepository 类自学说/持久性 1.3 以来已被弃用,并将在 2.0 中删除。使用\Doctrine\Persistence\ObjectRepository 代替。
  • Doctrine\Common\PropertyChangedListener 类自学说/持久性 1.3 以来已被弃用,并将在 2.0 中删除。使用\Doctrine\Persistence\PropertyChangedListener 代替。
  • "twig.exception_controller"配置键在 Symfony 4.4 中已被弃用,将其设置为 "null"并使用 "framework.error_controller"配置键代替。 (x2)

  • 这是“正常”还是我的 composer.json 文件有问题?我仔细检查过,看不到任何具有任何“固定”设置的依赖项。

    我什至删除了完整的供应商文件夹并再次下载,因为我认为可能会留下任何“垃圾”,结果相同。

    我的 composer.json 文件:
    {
        "type" : "project",
        "license" : "proprietary",
        "require" : {
            "php" : "^7.1.3",
            "ext-ctype" : "*",
            "ext-iconv" : "*",
            "sensio/framework-extra-bundle" : "^5.2",
            "symfony/apache-pack" : "^1.0",
            "symfony/asset" : "4.4.*",
            "symfony/console" : "4.4.*",
            "symfony/dotenv" : "4.4.*",
            "symfony/expression-language" : "4.4.*",
            "symfony/flex" : "^1.1",
            "symfony/form" : "4.4.*",
            "symfony/framework-bundle" : "4.4.*",
            "symfony/monolog-bundle" : "^3.1",
            "symfony/orm-pack" : "*",
            "symfony/process" : "4.4.*",
            "symfony/security-bundle" : "4.4.*",
            "symfony/serializer-pack" : "*",
            "symfony/swiftmailer-bundle" : "^3.1",
            "symfony/translation" : "4.4.*",
            "symfony/twig-bundle" : "4.4.*",
            "symfony/validator" : "4.4.*",
            "symfony/web-link" : "4.4.*",
            "symfony/webpack-encore-bundle" : "^1.1",
            "symfony/yaml" : "4.4.*"
        },
        "require-dev" : {
            "symfony/debug-pack" : "*",
            "symfony/maker-bundle" : "^1.0",
            "symfony/profiler-pack" : "^1.0",
            "symfony/test-pack" : "*",
            "symfony/web-server-bundle" : "4.4.*"
        },
        "config" : {
            "preferred-install" : {
                "*" : "dist"
            },
            "sort-packages" : true,
            "secure-http" : false
        },
        "autoload" : {
            "psr-4" : {
                "App\\" : "src/"
            }
        },
        "autoload-dev" : {
            "psr-4" : {
                "App\\Tests\\" : "tests/"
            },
            "classmap" : [
                "vendor/phpasn1"
            ]
        },
        "replace" : {
            "paragonie/random_compat" : "2.*",
            "symfony/polyfill-ctype" : "*",
            "symfony/polyfill-iconv" : "*",
            "symfony/polyfill-php71" : "*",
            "symfony/polyfill-php70" : "*",
            "symfony/polyfill-php56" : "*"
        },
        "conflict" : {
            "symfony/symfony" : "*"
        },
        "extra" : {
            "symfony" : {
                "allow-contrib" : false,
                "require" : "4.4.*"
            }
        }
    }
    

    编辑

    我用 composer show 检查了已安装的软件包并看到至少有 2 个已安装的软件包与上面的弃用列表相关:
    (...)
    doctrine/orm                        v2.7.0  Object-Relational-Mapper for PHP
    doctrine/persistence                1.3.3   The Doctrine Persistence project is a set of shared...
    (...)
    

    所以我用 composer info doctrine/persistence --all 检查了这些软件包的可用版本。我看到它已经安装了最新的非开发版本:
    name     : doctrine/persistence
    descrip. : The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.
    keywords : mapper, object, odm, orm, persistence
    versions : dev-master, 2.0.x-dev, 1.3.x-dev, * 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.x-dev, 1.2.0, 1.1.x-dev, 1.1.1, v1.1.0, 1.0.x-dev, v1.0.1, v1.0.0, dev-1.3.x-merge-up-into-master_5df35c38f354a9.94042071, dev-1.3.x-merge-up-into-master_5df33dc289ea03.65167777, dev-1.3.x-merge-up-into-master_5df29d964b0aa5.96685696, dev-github-funding, dev-master-old
    (...)
    

    doctrine-orm 相同.

    学说/持久性的 GitHub 站点似乎也证实了这一点:https://github.com/doctrine/persistence/releases

    所以这让我认为这真的是正常的行为,将来,当这些包更新时,弃用消息将消失。

    关于解决方案的说明

    任何阅读过已接受答案的人都会注意到,仍有 5 个弃用尚未解决。我将包括一个答案 ASA 有一个解决方案。如果有人在我之前注意到这一点,请随意添加这个问题的答案。谢谢。

    最佳答案

    好的,我已经能够解决以下问题。如果有人知道如何修复其他任何问题,请随意编辑。
    1.) 来自评论中的 Cerad:Deprecation: Doctrine\ORM\Mapping\UnderscoreNamingStrategy without making it number aware is deprecated
    9.) Twig twig.exception_controller配置选项:https://github.com/symfony/symfony/blob/4.4/UPGRADE-4.4.md#twigbundle
    2.) ExceptionListener当我修复上述两个项目时清除,使我降到只有 5 个弃用

    最后剩下的 5 个,似乎是已知的,并将按此修复:
    Deprecated classes warnings in Symfony 5.0.1 console on Windows

    关于php - 将 Symfony 4.3.9 升级到 4.4.1/5.0 后的弃用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327363/

    相关文章:

    php - 文本区域中查询的文本不完整

    php - 自定义字段未显示在自定义帖子类型帖子中

    php - 在 Symfony2 中使用自定义身份验证提供程序

    symfony - JMS 序列化器 : How to limit the depth of serialisation for an object graph

    composer-php - composer.json 文件属性名称是必需的

    php - 下载 php composer 依赖项的更好方法

    php - 我如何在 PHP 中获得格林威治标准时间?

    php - 为什么 strpos 不适用于 ">"和其他字符

    php - Symfony2 防火墙需要很长时间

    bash - 如何在composer之前使用各自的php版本名称