Composer: Recém-adicionado opção de tipo para RepositoryInterface :: search () quebra BC

Criado em 22 jun. 2016  ·  3Comentários  ·  Fonte: composer/composer

Aqui está a última mudança: https://github.com/composer/composer/commit/6a557e45b8295007db61e786736f04018fe5fe90#commitcomment -17966162
e o problema causado por ele: francoispluchino / composer-asset-plugin # 230

as alterações foram introduzidas por # 5454, o que também causou outra interrupção, relatada em # 5456.

Mensagem de erro após atualizar o compositor:

Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository::search()
must be compatible with Composer\Repository\RepositoryInterface::search($query, $mode = 0, $type = NULL)
in /code/vendor/fxp/composer-asset-plugin/Repository/AbstractAssetsRepository.php on line 334

veja francoispluchino / composer-asset-plugin # 230 para mais detalhes.

Bug

Comentários muito úteis

IMO isso não está quebrando por si só, ele apenas quebra plug-ins antigos com a nova versão, mas se o plug-in se ajustar à nova versão, ele deve ser compatível com versões antigas do compositor de acordo com https://3v4l.org/7OfIR ( adicionar parâmetros a uma interface que você implementa é bom, mas ter menos não é).

Poderíamos apenas remover o parâmetro da interface, o que não deve interromper nenhuma funcionalidade e permite que os plug-ins antigos funcionem bem. Ele poderia então ser adicionado no 2.0. Essa seria uma abordagem mais estritamente BC.

Todos 3 comentários

O problema não é facilmente resolvido. Essas alterações foram aplicadas no branch master, onde quebras de BC são aceitáveis. No entanto, como os plug-ins não podem depender de uma versão específica, mas são limitados a serem executados em qualquer versão que você, o usuário, opte por executar, as coisas podem falhar inesperadamente se você decidir usar o instantâneo mais recente em vez de uma versão estável.

Estou totalmente ciente de que o mestre pode quebrar, tudo bem. Eu relatei isso para que ele não seja enviado em uma versão sem fazer as alterações necessárias.

IMO isso não está quebrando por si só, ele apenas quebra plug-ins antigos com a nova versão, mas se o plug-in se ajustar à nova versão, ele deve ser compatível com versões antigas do compositor de acordo com https://3v4l.org/7OfIR ( adicionar parâmetros a uma interface que você implementa é bom, mas ter menos não é).

Poderíamos apenas remover o parâmetro da interface, o que não deve interromper nenhuma funcionalidade e permite que os plug-ins antigos funcionem bem. Ele poderia então ser adicionado no 2.0. Essa seria uma abordagem mais estritamente BC.

Esta página foi útil?
0 / 5 - 0 avaliações