Composer: Neu hinzugefügte Typoption zu RepositoryInterface :: search () unterbricht BC

Erstellt am 22. Juni 2016  ·  3Kommentare  ·  Quelle: composer/composer

Hier ist die grundlegende Änderung: https://github.com/composer/composer/commit/6a557e45b8295007db61e786736f04018fe5fe90#commitcomment -17966162
und das dadurch verursachte Problem: Francoispluchino / Composer-Asset-Plugin # 230

Die Änderungen wurden von # 5454 eingeführt, was auch eine weitere Unterbrechung verursachte, die in # 5456 gemeldet wird.

Fehlermeldung nach dem Aktualisieren von Composer:

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

Weitere Informationen finden Sie unter Francoispluchino / Composer-Asset-Plugin Nr. 230.

Bug

Hilfreichster Kommentar

IMO bricht dies nicht per se, es bricht nur alte Plugins mit der neuen Version, aber wenn sich das Plugin an die neue Version anpasst, sollte es mit alten Composer-Versionen gemäß https://3v4l.org/7OfIR (kompatibel sein) Das Hinzufügen von Parametern zu einer von Ihnen implementierten Schnittstelle ist in Ordnung, weniger jedoch nicht.

Wir könnten einfach den Parameter von der Schnittstelle entfernen, der keine Funktionalität beeinträchtigen sollte und die alten Plugins trotzdem einwandfrei funktionieren lässt. Es könnte dann in 2.0 hinzugefügt werden. Das wäre ein strengerer BC-Ansatz.

Alle 3 Kommentare

Das Problem ist jedoch nicht einfach zu beheben. Diese Änderungen wurden auf den Hauptzweig angewendet, wo BC-Unterbrechungen akzeptabel sind. Da Plugins jedoch nicht von einer bestimmten Version abhängen können, sondern nur auf die Version ausgeführt werden können, die Sie als Benutzer auswählen, können unerwartete Probleme auftreten, wenn Sie den neuesten Snapshot anstelle einer stabilen Version verwenden.

Ich bin mir völlig bewusst, dass der Meister brechen kann, es ist in Ordnung. Ich habe dies gemeldet, damit es nicht in einer Version versendet wird, ohne dass notwendige Änderungen vorgenommen werden.

IMO bricht dies nicht per se, es bricht nur alte Plugins mit der neuen Version, aber wenn sich das Plugin an die neue Version anpasst, sollte es mit alten Composer-Versionen gemäß https://3v4l.org/7OfIR (kompatibel sein) Das Hinzufügen von Parametern zu einer von Ihnen implementierten Schnittstelle ist in Ordnung, weniger jedoch nicht.

Wir könnten einfach den Parameter von der Schnittstelle entfernen, der keine Funktionalität beeinträchtigen sollte und die alten Plugins trotzdem einwandfrei funktionieren lässt. Es könnte dann in 2.0 hinzugefügt werden. Das wäre ein strengerer BC-Ansatz.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen