搜尋
首頁開發工具composerComposer的波浪線符號~和冪符號^到底有啥區別

下面由composer教學專欄為大家介紹Composer的波浪線符號~和冪符號^的差別,希望對需要的朋友有幫助!

Composer的波浪線符號~和冪符號^到底有啥區別

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

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

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

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

再來來說小版本號。如果你增加了新的功能,例如RPG 遊戲增加了自動拾取東西,或者你的程式碼庫裡增加了一個新的方法,用戶升級了你的程式碼庫也不會導致相容問題(BC),那麼小版本號1。

最後,如果你的軟體完全重構了,或者你的程式碼庫完全重構以至於用戶升級了新的庫必然導致相容問題,那麼大版本號 1。

當然,還會有同時修改了 bug 並增加了功能的情況,總之如果前一位需要 1,無論何種情況後面的位數都必須清零。

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

舉個比較經典的例子,雖然 Symfony 2/3/4 用起來也都差不多,但是因為這三個版本之間已經出現接口不一致的情況,所以大版本號碼必須得 1。如果你的函式庫檔案有介面改變導致不相容之前版本,哪怕只有一個,也應該將大版本號 1。

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

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

寫這篇部落格之前其實我在百度上搜了一下,想知道相關的文章是否很多,這篇文章還值得寫否。搜尋結果顯示也的確有人總結過。雖然大都只有一個例子:

~1.2.3 代表1.2.3

^1.2.3 代表1.2.3

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

~1.2 等於>=1.2.0;

而^ 符號,就跟上面說了那麼多的semantic versioning 有關係了,它表示盡量使用最新版本,但保證不產生相容問題,換句話說也就是除了大版本號以外,小版本號和補丁版本號都可以變。

但目前看來有一個很重要的細節大家都沒說到,在semantic versioning 裡,0 開頭的版本號是比較特殊的,而因為^ 嚴格遵守semantic versioning 規則,所以會出現以下情況(早先的composer 版本並沒有這樣的處理,後來修正了):

^0.3.0 等於>=0.3.0;

#咦?難道不應該是

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

~0.1 這種寫法是很危險的,因為~0.1 等於>=0.1.0;

^0.1(等於>=0.1.0;

以上是Composer的波浪線符號~和冪符號^到底有啥區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:chrisyue。如有侵權,請聯絡admin@php.cn刪除
作曲家:簡化PHP項目開發作曲家:簡化PHP項目開發Apr 15, 2025 am 12:08 AM

Composer簡化PHP項目開發的步驟包括:1)添加依賴,如在composer.json中添加"laravel/framework":"^8.0";2)自動加載,通過定義命名空間和類路徑生成autoload.php文件;3)優化性能,使用composerdump-autoload-o和composerinstall--no-dev--optimize-autoloader命令。通過這些步驟,開發者可以提高效率並避免常見錯誤。

作曲家憑證:是什麼使某人成為作曲家?作曲家憑證:是什麼使某人成為作曲家?Apr 14, 2025 am 12:13 AM

成為作曲家的關鍵要素包括:1.掌握音樂理論,2.具備創造力和原創性,3.擁有技術技能,4.能夠進行情感表達和故事講述,5.理解文化和歷史背景,6.積累實踐和經驗,這些要素共同構成了作曲家的身份和能力。

成為作曲家的途徑:實用指南成為作曲家的途徑:實用指南Apr 13, 2025 am 12:11 AM

成為作曲家的步驟包括:1.掌握音樂基本元素,如音符、節奏、和聲、旋律;2.選擇合適的技術工具,如AbletonLive;3.理解作曲的過程,包括靈感獲取、構思、編寫、修改和完善;4.從簡單旋律創作開始,逐步嘗試複雜技巧如和聲進行;5.通過調試技巧解決常見問題,如音符選擇和節奏安排;6.應用性能優化和最佳實踐,如使用模板、版本控制和協作。

作曲家:構建強大PHP應用程序的關鍵作曲家:構建強大PHP應用程序的關鍵Apr 12, 2025 am 12:05 AM

Composer是構建健壯PHP應用的關鍵工具,因為它簡化了依賴管理,提升了開發效率和代碼質量。 1)Composer通過composer.json文件定義項目依賴,並自動下載和管理這些依賴。 2)它生成composer.lock文件確保依賴版本一致,並通過vendor/autoload.php實現自動加載。 3)使用示例包括基本用法如添加日誌庫,以及高級用法如版本約束和環境變量管理。 4)常見錯誤調試技巧包括處理依賴衝突和網絡問題。 5)性能優化建議包括使用composer.lock文件和優化自動加載。

作曲家專業知識:是什麼使某人熟練作曲家專業知識:是什麼使某人熟練Apr 11, 2025 pm 12:41 PM

要在使用Composer時變得熟練,需要掌握以下技能:1.熟練使用composer.json和composer.lock文件,2.理解Composer的工作原理,3.掌握Composer的命令行工具,4.了解基本和高級用法,5.熟悉常見錯誤與調試技巧,6.優化使用和遵循最佳實踐。

作曲家在做什麼?作曲家在做什麼?Apr 08, 2025 am 12:19 AM

Composer是PHP的依賴管理工具,用於聲明、下載和管理項目依賴。 1)通過composer.json文件聲明依賴,2)使用composerinstall命令安裝依賴,3)解析依賴樹並從Packagist下載,4)生成autoload.php文件簡化自動加載,5)優化使用包括使用composerupdate--prefer-dist和調整autoload配置。

什麼是應用作曲家?什麼是應用作曲家?Apr 07, 2025 am 12:07 AM

AppComposer是一種用於構建和管理應用程序的工具。 1)它通過拖拽和配置預定義組件簡化應用開發,提高效率。 2)開發者可以定義組件、組合界面、定義業務邏輯,並最終渲染應用。 3)支持基本和高級用法,如任務管理和條件渲染,幫助構建靈活的應用。

作曲家是用什麼?作曲家是用什麼?Apr 06, 2025 am 12:02 AM

Composer是PHP的依賴管理工具。使用Composer的核心步驟包括:1)在composer.json中聲明依賴,如"stripe/stripe-php":"^7.0";2)運行composerinstall下載並配置依賴;3)通過composer.lock和autoload.php管理版本和自動加載。 Composer簡化了依賴管理,提升了項目效率和可維護性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。