Avisos de descontinuação após a atualização do Symfony 4.3.9 para 4.4.1 / 5.0

12

Eu tive uma instalação do Symfony 3.4.9 sem depreciação. Então, atualizei o FW para 4.1.1. Agora, recebi 9 avisos de descontinuação, todos provenientes de bibliotecas de fornecedores:

  • Criar Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy sem informar seu número é reprovado e será removido no Doctrine ORM 3.0.
  • A classe "Symfony \ Component \ HttpKernel \ EventListener \ ExceptionListener" está obsoleta desde o Symfony 4.4, use "ErrorListener".
  • A classe Doctrine \ Common \ Persistence \ Mapping \ AbstractClassMetadataFactory está obsoleta desde a doutrina / persistência 1.3 e será removida no 2.0. Use \ Doctrine \ Persistence \ Mapping \ AbstractClassMetadataFactory.
  • A classe Doctrine \ Common \ Persistence \ Mapping \ RuntimeReflectionService está obsoleta desde a doutrina / persistência 1.3 e será removida no 2.0. Use \ Doctrine \ Persistence \ Mapping \ RuntimeReflectionService.
  • A classe Doctrine \ Common \ Persistence \ ObjectManager está obsoleta desde a doutrina / persistência 1.3 e será removida no 2.0. Use \ Doctrine \ Persistence \ ObjectManager.
  • A classe Doctrine \ Common \ Persistence \ ObjectRepository está obsoleta desde a doutrina / persistência 1.3 e será removida no 2.0. Use \ Doctrine \ Persistence \ ObjectRepository.
  • A classe Doctrine \ Common \ PropertyChangedListener está obsoleta desde a doutrina / persistência 1.3 e será removida no 2.0. Use \ Doctrine \ Persistence \ PropertyChangedListener.
  • A chave de configuração "twig.exception_controller" foi descontinuada no Symfony 4.4, defina-a como "null" e use a chave de configuração "framework.error_controller". (x2)

Isso é "normal" ou há algum problema no meu arquivo composer.json? Eu verifiquei duas vezes e não consigo ver nenhuma dependência com nenhuma configuração "fixa".

Até excluí a pasta completa do fornecedor e baixei novamente, pois pensei que poderia haver "lixo" restante, com o mesmo resultado.

Meu arquivo 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.*"
        }
    }
}

EDITAR

Verifiquei os pacotes instalados composer showe observe se pelo menos 2 dos pacotes instalados são relevantes para a lista de descontinuação acima:

(...)
doctrine/orm                        v2.7.0  Object-Relational-Mapper for PHP
doctrine/persistence                1.3.3   The Doctrine Persistence project is a set of shared...
(...)

Portanto, verifiquei as versões disponíveis desses pacotes composer info doctrine/persistence --alle vi que ele instalou a versão mais recente não-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
(...)

O mesmo para doctrine-orm.

O site do GitHub para doutrina / persistência também parece corroborar isso: https://github.com/doctrine/persistence/releases

Portanto, isso me leva a pensar que esse é um comportamento realmente normal e que, no futuro, quando esses pacotes forem atualizados, as mensagens de reprovação desaparecerão.

Nota sobre solução

Como qualquer pessoa que leu a resposta aceita notará, ainda existem 5 preterições que ainda não podem ser resolvidas. Vou incluir uma resposta ASA, há uma correção para isso. Se alguém perceber isso diante de mim, fique à vontade para adicionar uma resposta a esta pergunta. Obrigado.

Nelson Teixeira
fonte
Se eles são provenientes de bibliotecas de fornecedores e não do seu código - é normal. Você deve atualizar os fornecedores em questão e isso deve corrigi-lo. Lembre-se de que nem todas as bibliotecas estão atualizadas com as mais recentes depreciações do symfony e da doutrina; portanto, a atualização pode não corrigi-la imediatamente.
Tftd 13/12/19
O problema é ... quais fornecedores? existem vários pacotes para doutrina e para galho. AFAIU estes são os envolvidos. Quais devo escolher em json? Eu verifiquei apenas ... apenas para o pacote doutrina existem 33.
Nelson Teixeira
A maneira mais fácil que encontrei para lidar com isso é iniciar o projeto no modo dev e percorrer algumas páginas do seu navegador. A barra de ferramentas de depuração mostrará avisos de descontinuação e você pode usar os tracelinks para ver o rastreamento de pilha e apontar de onde eles vêm. :)
tftd
2
As coisas mudaram entre 4.3 e 4.4. Lembre-se de que você só precisa limpar a depreciação antes de passar para a 5.x. Portanto, basta percorrer e corrigir como qualquer outro, embora o primeiro seja realmente um problema de doutrina e possa ser corrigido com: stackoverflow.com/questions/58975182/…
Cerad
11
Por favor, não apague a pergunta. Mesmo se não houver nada a fazer, exceto aguardar atualizações do fornecedor. Cheguei aqui através da reprovação de Doutrina (sobre ObjectManager) e isso me ajudou a ver o que estava acontecendo.
K00ni

Respostas:

3

Ok, consegui corrigir o seguinte. Sinta-se livre para editar isso se alguém souber como consertar qualquer um dos outros.

1.) De Cerad nos Comentários: Deprecation: Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy sem informar seu número como obsoleto

9.) Opção de configuração Twig twig.exception_controller: https://github.com/symfony/symfony/blob/master/UPGRADE-4.4.md#twigbundle

2.) O ExceptionListener foi liberado quando eu consertei os dois itens acima, reduzindo-me a apenas 5 substituições


Finalmente, os 5 restantes parecem conhecidos e serão corrigidos de acordo com isso: Avisos de classes obsoletas no console do Symfony 5.0.1 no Windows

MEmerson
fonte
11
Excelente. Também reduzi meu número de preterições para 5. Obrigado.
Nelson Teixeira
3

Se você quiser se livrar das Doctrine\Common\Persistence\*depreciações até que tudo seja corrigido, você pode adicionar um "conflict": { "doctrine/persistence": "1.3.*" }ao seu composer.jsone permanecer com a versão 1.2. * Da doutrina / persistência .

Damien Debin
fonte
2
Obrigado pela informação, mas prefiro as mensagens, ou provavelmente esquecerei que tenho que corrigir isso. :)
Nelson Teixeira