ホームページ  >  記事  >  開発ツール  >  Composer のチルダ記号 ~ とパワー記号 ^ の違いは何ですか?

Composer のチルダ記号 ~ とパワー記号 ^ の違いは何ですか?

藏色散人
藏色散人転載
2020-08-12 13:16:554063ブラウズ

composer の次のチュートリアル コラムでは、Composer のチルダ記号 ~ とパワー記号 ^ の違いを紹介します。困っている友人の役に立てば幸いです。

Composer のチルダ記号 ~ とパワー記号 ^ の違いは何ですか?

バージョン番号をランダムに書いている人が多すぎるのを見てきました (実際、以前よりもずっと良くなりました)。1.9.0 の次のバージョンは 2.0.0 でなければなりません。 , 2.9 .0 次のバージョンは 3.0.0 でなければなりません...主な理由は、以前はバージョン番号の標準的な名前がなかったためで、誰もが自分の気分に従って書いていました。その後、セマンティックバージョニングが推進され、バージョン番号の命名状況は改善されましたが、未だに3セグメントのバージョン番号が何を意味するのか知らない人も多いです(この仕様を色々な養成所で教えたら死ぬでしょうか)。 ..)。

簡単に言うと (単に移動しているだけです。上記の Web サイトを参照するとわかりやすくなります)、3 セグメントのバージョン番号の各セグメントの意味は次のとおりです:

大きいバージョン。パッチ バージョン

最初に、最もわかりやすいパッチ バージョンについて説明します。ソフトウェアまたはライブラリに以前にいくつかのバグが修正されている場合は、パッチ バージョンを 1 にする必要があります。

マイナー バージョン番号について話しましょう。コード ベースに自動的に物事を取得する RPG ゲームや新しいメソッドなどの新しい機能を追加した場合、ユーザーがコード ベースをアップグレードしても互換性の問題 (BC) が発生することはありません。そのため、小規模バージョン No. 1 。

最後に、ソフトウェアが完全にリファクタリングされている場合、またはコード ベースが完全にリファクタリングされているため、ユーザーが新しいライブラリをアップグレードすると互換性の問題が必然的に発生する場合、メジャー バージョン番号は 1 です。

もちろん、バグ修正や機能追加が同時に行われる場合もありますが、つまり、前のビットが 1 であれば、次のビットは必ず 0 にクリアする必要があります。

実際には、エンド ユーザーにとってソフトウェアについてあまり厳密にする必要はありません。なぜなら、エンド ユーザーはバージョンをあまり気にしないからです (大きなバージョン番号を除いて...)。そのため、Chrome スタイルのバージョン番号が表示され、Firefox もそれに倣いました。 ...) しかし、ライブラリ ファイルの作成者にとっては、バージョン番号を遵守することをお勧めします。設定したバージョン番号は、ライブラリの呼び出し元に非常に重要な情報を提供し、ライブラリの呼び出し元は、そのバージョン番号を使用する必要があるためです。互換性の問題を回避するかどうかを決定するバージョン番号。

より古典的な例を挙げると、Symfony 2/3/4 は使用方法が似ていますが、これら 3 つのバージョン間にはインターフェイスの不一致があるため、メジャー バージョン番号は 1 でなければなりません。ライブラリ ファイルに以前のバージョンとの互換性がなくなるようなインターフェイスの変更があった場合は、メジャー バージョン番号が 1 つしかない場合でも、メジャー バージョン番号を 1 に変更する必要があります。

そして、Symfony 3.0.x を使用してプロジェクトを開発している場合、3.4.x に直接アップグレードしても、理論的にはまったく問題ありません。

3 セグメントのバージョン番号について話した後、PHPer を悩ませる問題について話しましょう。composer.json でバージョン番号を指定する ^ 記号と ~ 記号は何を意味しますか?違いは何ですか?

このブログを書く前に、実際に百度で検索して、関連記事がたくさんあるのか、この記事を書く価値があるのか​​を知りたかったのです。検索結果を見ると、確かに誰かが要約していることがわかります。ほとんどの場合、例は 1 つだけです:

~1.2.3 は 1.2.3 を表します ^1.2.3 は 1.2.3 上記の転送内容を踏まえて、もう少し補足しますと、 ~ はバージョン番号が最後の段落のみ変更できることを意味します (~x.y の場合は最後が y、~x.y の場合は最後が y) ~x.y.z、最後は z)、たとえば、この場合:

~1.2 は >=1.2.0; <2.0.0

に等しく、^ はシンボルは、前述のセマンティック バージョン管理に関連しています。これは、最新バージョンの使用を試みますが、互換性の問題が発生しないようにすることを意味します。つまり、メジャー バージョン番号に加えて、マイナー バージョン番号、およびパッチ バージョン番号変更可能。

しかし、まだ誰も言及していない非常に重要な詳細があるようです。セマンティック バージョニングでは、0 で始まるバージョン番号は非常に特殊であり、^ はセマンティック バージョニング ルールに厳密に従っているため、次のようになります。状況 (以前の Composer バージョンにはこの処理がありませんでしたが、後に修正されました):

##^0.3.0 は >=0.3.0; <0.4.0## に等しい#え? 理由は、セマンティック バージョニングのルールとして、メジャー バージョン番号が 0 で始まる場合は不安定なバージョン (unstable) を意味し、不安定な状態の場合はマイナー バージョン番号が表示されるためです。下位互換性を持たせることはできません。したがって、0 で始まるライブラリを指定する場合は、次の点に注意する必要があります:

~0.1 ~0.1 は >=0.1.0; #^0.1 (>=0.1.0; と記述する方が安全です。

以上がComposer のチルダ記号 ~ とパワー記号 ^ の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はchrisyue.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。