Предупреждения об устаревании после обновления Symfony 4.3.9 до 4.4.1 / 5.0

12

У меня была бесплатная установка Symfony 3.4.9. Поэтому я обновил FW до 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 устарел начиная с доктрины / постоянства 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 устарел начиная с доктрины / постоянства 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». (Х2)

Это "нормально" или есть какие-то проблемы в моем файле 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и увидел, что он установил последнюю версию не-dev:

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 есть исправление для этого. Если кто-то заметит это до меня, пожалуйста, не стесняйтесь, чтобы добавить ответ на этот вопрос. Спасибо.

Нельсон Тейшейра
источник
Если они приходят из библиотек поставщиков, а не из вашего кода - тогда это нормально. Вы должны обновить поставщиков, о которых идет речь, и это должно исправить это. Имейте в виду, что не все библиотеки соответствуют последним устаревшим версиям Symfony & Doctrine, поэтому обновление может не исправить это сразу.
TFTD
Проблема в том ... какие продавцы? Есть несколько пакетов для доктрины и ветки. AFAIU это те, кто участвует. Какие из них я должен выбрать в JSON? Я только что проверил ... только для пакета доктрины есть 33.
Нельсон Тейшейра
Я нашел самый простой способ справиться с этим - запустить проект в режиме разработки и просмотреть некоторые страницы в браузере. Панель инструментов отладки покажет вам уведомления об устаревании, и вы можете использовать traceссылки, чтобы увидеть трассировку стека и определить, откуда они берутся. :)
tftd
2
Вещи изменились между 4.3 и 4.4. Помните, что вам нужно только очистить устаревшие элементы перед переходом на 5.x. Так что просто пропустите и исправьте, как и любой другой, хотя первый на самом деле является проблемой Doctrine и может быть исправлен с помощью: stackoverflow.com/questions/58975182/…
Cerad
1
Пожалуйста, не удаляйте вопрос. Даже если ничего не поделаешь, кроме как ждать обновления продавца. Я попал сюда из-за устаревшей Доктрины (примерно ObjectManager), и это помогло мне увидеть, что происходит.
k00ni

Ответы:

3

Хорошо, я смог исправить следующее. Не стесняйтесь редактировать это, если кто-нибудь знает, как исправить любые другие.

1.) От Cerad в комментариях: Устаревание: Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy, не сообщая об этом, число не рекомендуется

9.) Параметр конфигурации Twig twig.exception_controller: https://github.com/symfony/symfony/blob/master/UPGRADE-4.4.md#twigbundle

2.) ExceptionListener очищается, когда я исправил два вышеупомянутых элемента, в результате чего у меня осталось только 5 устаревших


Наконец, 5 оставшихся, кажется, известны и будут исправлены следующим образом: Устаревшие предупреждения классов в консоли Symfony 5.0.1 в Windows

MEmerson
источник
1
Отлично. Также уменьшил мое количество амортизаций до 5. Спасибо.
Нельсон Тейшейра
3

Если вы хотите избавиться от Doctrine\Common\Persistence\*амортизации до тех пор, пока все не будет исправлено, вы можете добавить "conflict": { "doctrine/persistence": "1.3.*" }к себе composer.jsonи остаться с версией 1.2. * Доктрины / настойчивости .

Дэмиен Дебин
источник
2
Спасибо за информацию, но у меня скорее есть сообщения, или я, вероятно, забуду, что должен это исправить. :)
Нельсон Тейшейра