Composer的波浪線符號~和冪符號^有哪些區(qū)別-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)Composer的波浪線符號~和冪符號^有哪些區(qū)別的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)公司提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。

曾經(jīng)見過太多亂寫版本號的(其實現(xiàn)在比以前好很多了),好多 1.9.0 的下個版本必然是 2.0.0, 2.9.0 下個版本必須 3.0.0……主要還是因為之前對版本號的命名就沒有規(guī)范,大家都是看心情寫。后來 semantic versioning 得到推廣,版本號取名的情況得到改善,但依然有很多人不知道三段式版本號是什么含義(各種培訓(xùn)學(xué)校你們教一下這些規(guī)范會死么……)。

簡單來說(我也就是搬運一下,上面提到的網(wǎng)站說的更清楚),三段式版本號各個段的含義是:

大版本.小版本.補丁版本

先說最明顯的補丁版本。如果你的軟件或者庫,之前有一些 bug 被修復(fù)了,此時補丁版本需要 +1。

再來說小版本號。如果你增加了新的功能,比如 RPG 游戲增加了自動拾取東西,或者你的代碼庫里增加了一個新的方法,用戶升級了你的代碼庫也不會導(dǎo)致兼容問題(BC),那么小版本號 +1。

最后,如果你的軟件完全重構(gòu)了,或者你的代碼庫完全重構(gòu)以至于用戶升級了新的庫必然導(dǎo)致兼容問題,那么大版本號 +1。

當(dāng)然,還會有同時修改了 bug 并增加了功能的情況,總之如果前一位需要 +1,無論何種情況后面的位數(shù)都必須清零。

對于面向終端用戶的軟件,其實也用不著太嚴(yán)格,因為終端用戶也不太關(guān)心版本(除了大版本號……,所以出現(xiàn)了 chrome 風(fēng)格的版本號,火狐也跟著帶壞……),但對于庫文件作者,還是遵守版本號的好,因為你定的版本號,提供了很重要的信息給庫調(diào)用者,他們需要通過你的版本號來判斷是否要避免兼容性問題。

舉個比較經(jīng)典的例子,雖然 Symfony 2/3/4 用起來也都差不多,但是因為這三個版本之間已經(jīng)出現(xiàn)接口不一致的情況,所以大版本號必須得 +1。如果你的庫文件有接口改變導(dǎo)致不兼容之前版本,哪怕只有一個,也應(yīng)該將大版本號 +1。

而如果你用 Symfony 3.0.x 開發(fā)了一些項目,即使直接升級到 3.4.x,理論上來說也是完全沒有問題的。

說完三段式版本號,再來說說一個比較困擾 PHPer 的問題,到底 composer.json 里指定版本號的 ^ 符號和 ~ 符號到底是什么意思?有什么區(qū)別?

寫這篇博客之前其實我在百度上搜了一下,想知道相關(guān)的文章是否很多,這篇文章還值得寫否。搜索結(jié)果顯示也的確有人總結(jié)過。雖然大都只有一個例子:

~1.2.3 代表 1.2.3 <= 版本號 < 1.3.0

^1.2.3 代表 1.2.3 <= 版本號 < 2.0.0

根據(jù)以上搬運內(nèi)容,我再補充一點點,~表示版本號只能改變最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z),比如這種情況:

~1.2 等于 >=1.2.0; <2.0.0

而 ^ 符號,就跟上面說了那么多的 semantic versioning 有關(guān)系了,它表示盡量使用新版本,但保證不產(chǎn)生兼容問題,換句話說也就是除了大版本號以外,小版本號和補丁版本號都可以變。

但目前看來有一個很重要的細(xì)節(jié)大家都沒說到,在 semantic versioning 里,0 開頭的版本號是比較特殊的,而因為 ^ 嚴(yán)格遵守 semantic versioning 規(guī)則,所以會出現(xiàn)以下情況(早先的 composer 版本并沒有這樣的處理,后來修正了):

^0.3.0 等于 >=0.3.0; <0.4.0

咦?難道不應(yīng)該是 <1.0.0 嗎?

究其原因,semantic versioning 的規(guī)定是,大版本號以 0 開頭表示這是一個非穩(wěn)定版本(unstable),如果處于非穩(wěn)定狀態(tài),小版本號是允許不向下兼容的!所以如果你要指定 0 開頭的庫那一定要注意:

~0.1 這種寫法是很危險的,因為 ~0.1 等于 >=0.1.0; <1.0.0,可能出現(xiàn)無法向下兼容的情況,比較保險的寫法還是

^0.1(等于 >=0.1.0; <0.2.0)

感謝各位的閱讀!關(guān)于“Composer的波浪線符號~和冪符號^有哪些區(qū)別”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

當(dāng)前標(biāo)題:Composer的波浪線符號~和冪符號^有哪些區(qū)別-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article30/icdso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站小程序開發(fā)、云服務(wù)器、標(biāo)簽優(yōu)化、網(wǎng)站制作、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司