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

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

Aug 12, 2020 pm 01:16 PM
composer

下面由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.3.0

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

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

~1.2 等於>=1.2.0; <2.0.0

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

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

^0.3.0 等於>=0.3.0; <0.4.0

#咦?難道不應該是 <1.0.0 嗎?

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

~0.1 這種寫法是很危險的,因為~0.1 等於>=0.1.0; <1.0.0,可能出現無法向下相容的情況,比較保險的寫法還是

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

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

如何使用 Composer 簡化郵件營銷:DUWA.io 的應用實踐 如何使用 Composer 簡化郵件營銷:DUWA.io 的應用實踐 Apr 18, 2025 am 11:27 AM

在進行郵件營銷活動時,我遇到了一個棘手的問題:如何高效地創建並發送HTML格式的郵件。傳統的方法是手動編寫代碼並使用SMTP服務器發送郵件,但這不僅耗時,而且容易出錯。在嘗試了多種解決方案後,我發現了DUWA.io,這是一個簡單易用的RESTAPI,能夠幫助我快速創建和發送HTML郵件。為了進一步簡化開發流程,我決定使用Composer來安裝和管理DUWA.io的PHP庫——captaindoe/duwa。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

使用DICR/YII2-Google將Google API集成在YII2中 使用DICR/YII2-Google將Google API集成在YII2中 Apr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko

laravel怎麼查看版本號 laravel查看版本號方法 laravel怎麼查看版本號 laravel查看版本號方法 Apr 18, 2025 pm 01:00 PM

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

如何使用 Composer 提升 Laravel 應用的安全性:wiebenieuwenhuis/laravel-2fa 庫的應用 如何使用 Composer 提升 Laravel 應用的安全性:wiebenieuwenhuis/laravel-2fa 庫的應用 Apr 18, 2025 am 11:36 AM

在開發一個Laravel應用時,我遇到了一個常見但棘手的問題:如何提升用戶賬戶的安全性。隨著網絡攻擊的日益複雜,單一的密碼保護已經不足以保障用戶的數據安全。我嘗試了幾種方法,但效果都不盡如人意。最終,我通過Composer安裝了wiebenieuwenhuis/laravel-2fa庫,成功地為我的應用添加了雙因素認證(2FA),大大提升了安全性。

See all articles