国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
正確安裝全局 Composer 包
該工具不應(yīng)該/不能做什麼?
接下來是什麼?
關(guān)於 Composer 全局 Require 的常見問題
為什麼使用 Composer 的全局 require 被認(rèn)為是有害的?
Composer 全局 require 的替代方案是什麼?
cgr 如何幫助避免全局依賴問題?
如何安裝和使用 cgr?
Composer 中本地安裝和全局安裝有什麼區(qū)別?
如何在 Composer 中管理全局依賴項(xiàng)?
我可以在 Composer 中同時(shí)使用本地安裝和全局安裝嗎?
不正確管理 Composer 中的依賴項(xiàng)有哪些風(fēng)險(xiǎn)?
如何解決 Composer 中的依賴衝突?
如何保持 Composer 依賴項(xiàng)的最新狀態(tài)?
首頁 後端開發(fā) php教程 作曲家全球需要被認(rèn)為有害嗎?

作曲家全球需要被認(rèn)為有害嗎?

Feb 15, 2025 pm 01:24 PM

Composer Global Require Considered Harmful?

關(guān)鍵要點(diǎn)

  • 除非全局安裝的包沒有依賴項(xiàng),否則將 composer global require 用於安裝跨多個(gè)項(xiàng)目使用的包現(xiàn)在被許多人認(rèn)為是不好的做法。這是因?yàn)楫?dāng)包共享相同的空間時(shí),可能會(huì)發(fā)生依賴衝突。
  • 另一種解決方案是使用 composer require 將每個(gè)命令行工具安裝到其自己的本地項(xiàng)目中,手動(dòng)管理 $PATH 或二進(jìn)製文件。但是,這可能會(huì)增加複雜性和乏味性。對(duì)全局命令的建議更改可能會(huì)看到一個(gè)“全局的”但隔離的項(xiàng)目安裝到特定位置,其供應(yīng)商和 bin 目錄出現(xiàn)在它們通常的位置。
  • 一個(gè)新的工具 cgr (Composer Global Require) 已經(jīng)被開發(fā)出來作為全局實(shí)現(xiàn)的替代方案。它為每個(gè)包創(chuàng)建隔離的安裝,避免全局依賴問題。但是,此工具仍處於概念驗(yàn)證階段,可能會(huì)發(fā)生更改。建議對(duì)其進(jìn)行測試,但此時(shí)不要過度依賴它。

我們之前討論過 Composer 的最佳實(shí)踐,我一直提倡在安裝可在多個(gè)項(xiàng)目中使用的包(特別是命令行工具)時(shí)使用 composer global require。然後,有一天,我遇到了這個(gè)討論。

Composer Global Require Considered Harmful?

簡而言之,現(xiàn)在大多數(shù)人似乎覺得全局 require 是不好的做法,除非全局安裝的包沒有依賴項(xiàng)。從技術(shù)上講,當(dāng)一個(gè)人對(duì)所有項(xiàng)目使用單個(gè)環(huán)境時(shí),這是有意義的,但正如我在該討論中評(píng)論的那樣,當(dāng)每個(gè)項(xiàng)目使用虛擬機(jī)或像Docker 這樣的適當(dāng)隔離的環(huán)境時(shí),這個(gè)問題就無關(guān)緊要了,全局實(shí)際上不會(huì)造成損害。

OP 對(duì)此問題的建議解決方案是:

作為替代方案,用戶應(yīng)該使用composer require 將每個(gè)命令行工具安裝到其自己的本地項(xiàng)目中,並手動(dòng)管理其$PATH 或二進(jìn)製文件(例如,通過從$PATH 中已有的bin 目錄創(chuàng)建符號(hào)鏈接)。

對(duì)我來說,這是一個(gè)完全不可接受的複雜化。 Composer 一直是 PHP 的驕傲,因?yàn)樗嘴妒褂?,並且使包管理變得對(duì)新手友好——本地 全局。必須四處創(chuàng)建符號(hào)鏈接(尤其要考慮到像 Windows 這樣的非符號(hào)鏈接操作系統(tǒng))會(huì)增加乏味感。然後,OP 進(jìn)一步建議更改全局命令的工作方式:

可以將一個(gè)“全局的”但隔離的項(xiàng)目安裝到~/.composer/global/[something];其供應(yīng)商和bin 目錄將出現(xiàn)在它們通常的位置,並且~/.composer/global/[something]/bin 目錄的內(nèi)容可以在~/.composer/vendor/bin 中鏡像(通過符號(hào)鏈接),或者更好的選擇可能是~/.composer/bin。字符串 [something] 可以通過多種方式選擇;最直接的方法是 org/project(儘管這意味著將存在像 ~/.composer/global/org/project/vendor/org/project 這樣的長路徑)。

我完全同意這種方法,它似乎是兩全其美的。顯然,這可能會(huì)導(dǎo)致一些向後兼容性問題,但這並不意味著它不能在 Composer 的 2.0 版本中發(fā)生。 Taylor Otwell 在下面進(jìn)一步回應(yīng)了這種觀點(diǎn):

完全同意。能夠?qū)⒚總€(gè) composer 全局安裝的包安裝到其自己的隔離目錄中,並擁有其自己的隔離依賴項(xiàng),而不是可能與其他全局安裝的包衝突,這將是令人驚奇的。

在此之後,本著真正的開源精神,OP 隨後將替代全局實(shí)現(xiàn)構(gòu)建為一個(gè)單獨(dú)的工具:cgr。讓我們看看它是如何工作的。

CGR – Composer 全局 Require 替代方案

我將在 Homestead Improved 實(shí)例上執(zhí)行以下所有命令

要開始使用 CGR,我們將其作為全局包安裝。

composer global require consolidation/cgr

如果 Composer 的 bin 文件夾不在 PATH 變量中,請(qǐng)?zhí)砑铀?/p>

echo "export PATH=$PATH:$HOME/.composer/vendor/bin/" >> ~/.bashrc
echo "export CGR_BIN_DIR=$HOME/.composer/vendor/bin" >> ~/.bashrc
source ~/.bashrc

以上命令使用 Composer 的全局 bin 目錄的路徑擴(kuò)展 $PATH 環(huán)境變量(Homestead Improved 上的默認(rèn)位置——你的位置可能不同)。第二個(gè)命令配置 cgr 使用的 bin 目錄,而第三個(gè)命令加載這些更改。這些也將在每次以該用戶身份運(yùn)行終端界面時(shí)自動(dòng)加載(在我的情況下,通過 vagrant ssh 使用 Vagrant)。

然後可以通過運(yùn)行 cgr 來訪問 CGR,它應(yīng)該輸出 Composer 的一般幫助文件。

正確安裝全局 Composer 包

cgr phpunit/phpunit

在 Homestead Improved 上,配置了一個(gè)有用的別名,在其中鍵入 phpunit 會(huì)擴(kuò)展為 vendor/bin/phpunit,這在每個(gè)項(xiàng)目安裝 phpunit 時(shí)非常方便,因此可以從根文件夾運(yùn)行它。為了測試 PhpUnit 的全局安裝,我們需要先刪除此別名(在 ~/.bash_aliases 中註釋相應(yīng)的行),然後退出 shell 並重新進(jìn)入,以便別名重新加載。然後,使用版本輸出運(yùn)行這個(gè)新全局安裝的 PhpUnit 應(yīng)該產(chǎn)生類似以下內(nèi)容:

vagrant@homestead:~$ phpunit --version
PHPUnit 5.4.2 by Sebastian Bergmann and contributors.

現(xiàn)在讓我們嘗試安裝兩個(gè)不兼容的包。

cgr laravel/installer
cgr wp-cli/wp-cli

當(dāng)然,它們都可以正常安裝。讓我們檢查它們是否有效。

composer global require consolidation/cgr

一切順利!以前由於依賴項(xiàng)不匹配而發(fā)生衝突的全局包現(xiàn)在可以並排共存,並且可以在整個(gè)操作系統(tǒng)中使用,而不會(huì)出現(xiàn)任何問題!

該工具不應(yīng)該/不能做什麼?

在某些情況下,您可能希望安裝 Composer 插件。如限制部分所述,由於 CGR 將每個(gè)全局包安裝到其自己的文件夾中並擁有其自己的依賴項(xiàng)樹,因此這些插件不會(huì)在所有全局項(xiàng)目中全局可用。因此,如果您想安裝更改 composer 通用行為的插件,您仍然應(yīng)該使用 composer global require 而不是 cgr。例如,CGR 本身就是這樣一個(gè)插件。

接下來是什麼?

測試,測試,測試!如果您是全局 require 命令的常用用戶,我強(qiáng)烈建議您測試這個(gè)新工具,並向 Greg Anderson 提供一些反饋,說明它在多大程度上滿足了您的全局需求,以及是否有任何改進(jìn)之處。

請(qǐng)注意,此工具目前只是一個(gè)概念驗(yàn)證,實(shí)現(xiàn)方式可能會(huì)或可能不會(huì)重命名、重新打包、最終集成到 Composer 的核心等等。換句話說,盡可能多地使用它,但暫時(shí)不要過度依賴它。

在您的全局包安裝的同時(shí),為什麼不告訴我們您對(duì) composer global require 的看法呢?它像許多人現(xiàn)在認(rèn)為的那樣有害嗎?還是僅僅是謹(jǐn)慎行事和擁有隔離的開發(fā)環(huán)境的問題?其他什麼?請(qǐng)?jiān)谙旅姘l(fā)表您的意見!

關(guān)於 Composer 全局 Require 的常見問題

為什麼使用 Composer 的全局 require 被認(rèn)為是有害的?

Composer 的全局 require 被認(rèn)為是有害的,因?yàn)樗赡軐?dǎo)致依賴衝突。當(dāng)您全局安裝包時(shí),它們都共享相同的空間,這意味著它們共享相同的依賴項(xiàng)集。如果兩個(gè)包需要不同版本的相同依賴項(xiàng),則可能導(dǎo)致衝突和錯(cuò)誤。建議為每個(gè)項(xiàng)目安裝其自己的一組依賴項(xiàng),以避免此類問題。

Composer 全局 require 的替代方案是什麼?

不要使用 Composer 的全局 require,您可以為每個(gè)需要的工具創(chuàng)建一個(gè)新的 Composer 項(xiàng)目。這樣,每個(gè)工具將擁有自己的一組依賴項(xiàng),從而降低衝突的風(fēng)險(xiǎn)。您還可以使用 cgr 等工具,它為每個(gè)包創(chuàng)建隔離的安裝,從而避免全局依賴問題。

cgr 如何幫助避免全局依賴問題?

CGR(Composer 全局 Require)是一個(gè)為每個(gè)包創(chuàng)建隔離安裝的工具。這意味著每個(gè)包及其依賴項(xiàng)都安裝在其自己的單獨(dú)目錄中,避免了不同包的依賴項(xiàng)之間發(fā)生衝突的風(fēng)險(xiǎn)。這使其成為使用 Composer 全局 require 的更安全替代方案。

如何安裝和使用 cgr?

要安裝 cgr,您可以使用命令 composer global require consolidation/cgr。安裝後,您可以像使用 Composer 的全局 require 一樣使用 cgr。例如,要安裝包,您可以使用命令 cgr require package-name

Composer 中本地安裝和全局安裝有什麼區(qū)別?

在 Composer 中,本地安裝意味著包及其依賴項(xiàng)安裝在項(xiàng)目的目錄中。這是安裝包的推薦方法,因?yàn)樗梢员苊庖蕾囆n突。另一方面,全局安裝將包及其依賴項(xiàng)安裝在全局目錄中,如果不同的包需要不同版本的相同依賴項(xiàng),則可能導(dǎo)致衝突。

如何在 Composer 中管理全局依賴項(xiàng)?

由於存在衝突的風(fēng)險(xiǎn),在 Composer 中管理全局依賴項(xiàng)可能具有挑戰(zhàn)性。但是,像 cgr 這樣的工具可以通過為每個(gè)包創(chuàng)建隔離的安裝來提供幫助。您還可以通過為每個(gè)需要的工具創(chuàng)建一個(gè)新的 Composer 項(xiàng)目來管理全局依賴項(xiàng),確保每個(gè)工具都擁有自己的一組依賴項(xiàng)。

我可以在 Composer 中同時(shí)使用本地安裝和全局安裝嗎?

是的,您可以在 Composer 中同時(shí)使用本地安裝和全局安裝。但是,建議盡可能使用本地安裝以避免依賴衝突。如果您需要全局使用包,請(qǐng)考慮使用 cgr 等工具來創(chuàng)建隔離的安裝。

不正確管理 Composer 中的依賴項(xiàng)有哪些風(fēng)險(xiǎn)?

不正確管理 Composer 中的依賴項(xiàng)可能導(dǎo)致衝突和錯(cuò)誤。如果兩個(gè)包需要不同版本的相同依賴項(xiàng),則可能會(huì)導(dǎo)致難以調(diào)試的問題。它還可能導(dǎo)致應(yīng)用程序出現(xiàn)意外行為,因?yàn)椴煌姹镜囊蕾図?xiàng)可能具有不同的功能和行為。

如何解決 Composer 中的依賴衝突?

要解決 Composer 中的依賴衝突,您可以嘗試將包更新到最新版本,因?yàn)檫@可能會(huì)解決衝突。如果這不起作用,您可能需要重新考慮您正在使用的包並找到?jīng)]有衝突依賴項(xiàng)的替代方案。像 cgr 這樣的工具也可以通過為每個(gè)包創(chuàng)建隔離的安裝來提供幫助。

如何保持 Composer 依賴項(xiàng)的最新狀態(tài)?

要保持 Composer 依賴項(xiàng)的最新狀態(tài),您可以使用 composer update 命令。這會(huì)根據(jù) composer.json 文件中指定的版本約束將所有包更新到其最新版本。您還可以使用 composer outdated 命令查看哪些包有可用的較新版本。

以上是作曲家全球需要被認(rèn)為有害嗎?的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何升級(jí)PHP版本? 如何升級(jí)PHP版本? Jun 27, 2025 am 02:14 AM

升級(jí)PHP版本其實(shí)不難,但關(guān)鍵在於操作步驟和注意事項(xiàng)。以下是具體方法:1.確認(rèn)當(dāng)前PHP版本及運(yùn)行環(huán)境,使用命令行或phpinfo.php文件查看;2.選擇適合的新版本並安裝,推薦8.2或8.1,Linux用戶用包管理器安裝,macOS用戶用Homebrew;3.遷移配置文件和擴(kuò)展,更新php.ini並安裝必要擴(kuò)展;4.測試網(wǎng)站是否正常運(yùn)行,檢查錯(cuò)誤日誌確保無兼容性問題。按照這些步驟操作,大多數(shù)情況都能順利完成升級(jí)。

在Linux上配置PHP開發(fā)環(huán)境的步驟 在Linux上配置PHP開發(fā)環(huán)境的步驟 Jun 30, 2025 am 01:57 AM

TosetupaPHPdevelopmentenvironmentonLinux,installPHPandrequiredextensions,setupawebserverlikeApacheorNginx,testwithaPHPfile,andoptionallyinstallMySQLandComposer.1.InstallPHPandextensionsviapackagemanager(e.g.,sudoaptinstallphpphp-mysqlphp-curlphp-mbst

PHP初學(xué)者指南:當(dāng)?shù)丨h(huán)境配置的詳細(xì)說明 PHP初學(xué)者指南:當(dāng)?shù)丨h(huán)境配置的詳細(xì)說明 Jun 27, 2025 am 02:09 AM

要設(shè)置PHP開發(fā)環(huán)境,需選擇合適的工具並正確安裝配置。 ①最基礎(chǔ)的PHP本地環(huán)境需要三個(gè)組件:Web服務(wù)器(Apache或Nginx)、PHP本身和數(shù)據(jù)庫(如MySQL/MariaDB);②推薦初學(xué)者使用集成包如XAMPP或MAMP,它們簡化了安裝流程,XAMPP適用於Windows和macOS,安裝後將項(xiàng)目文件放入htdocs目錄並通過localhost訪問;③MAMP適合Mac用戶,支持便捷切換PHP版本,但免費(fèi)版功能有限;④高級(jí)用戶可用Homebrew手動(dòng)安裝,在macOS/Linux系統(tǒng)中

如何將兩個(gè)PHP陣列組合獨(dú)特的值? 如何將兩個(gè)PHP陣列組合獨(dú)特的值? Jul 02, 2025 pm 05:18 PM

要合併兩個(gè)PHP數(shù)組並保留唯一值,有兩種主要方法。 1.對(duì)於索引數(shù)組或僅需值去重的情況,使用array_merge和array_unique組合:先用array_merge($array1,$array2)合併數(shù)組,再用array_unique()去重,最終得到包含所有唯一值的新數(shù)組;2.對(duì)於關(guān)聯(lián)數(shù)組且希望保留第一個(gè)數(shù)組中的鍵值對(duì)時(shí),使用 運(yùn)算符:$result=$array1 $array2,這將確保第一個(gè)數(shù)組中的鍵不會(huì)被第二個(gè)數(shù)組覆蓋。這兩種方法分別適用於不同場景,根據(jù)是否需要保留鍵名或只關(guān)注

如何防止PHP中的跨站點(diǎn)偽造偽造(CSRF)攻擊? 如何防止PHP中的跨站點(diǎn)偽造偽造(CSRF)攻擊? Jun 28, 2025 am 02:25 AM

TopreventCSRFattacksinPHP,implementanti-CSRFtokens.1)Generateandstoresecuretokensusingrandom_bytes()orbin2hex(random_bytes(32)),savethemin$_SESSION,andincludetheminformsashiddeninputs.2)ValidatetokensonsubmissionbystrictlycomparingthePOSTtokenwiththe

PHP正則密碼強(qiáng)度 PHP正則密碼強(qiáng)度 Jul 03, 2025 am 10:33 AM

判斷密碼強(qiáng)度需結(jié)合正則與邏輯處理,基礎(chǔ)要求包括:1.長度不少於8位;2.至少含小寫字母、大寫字母、數(shù)字;3.可加入特殊字符限制;進(jìn)階方面需避免連續(xù)重複字符及遞增/遞減序列,這需PHP函數(shù)檢測;同時(shí)應(yīng)引入黑名單過濾常見弱密碼如password、123456;最終建議結(jié)合zxcvbn庫提升評(píng)估精度。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗(yàn)證來源與類型、控製文件名與路徑、設(shè)置服務(wù)器限制並二次處理媒體文件。 1.驗(yàn)證上傳來源通過token防止CSRF並通過finfo_file檢測真實(shí)MIME類型使用白名單控制;2.重命名文件為隨機(jī)字符串並根據(jù)檢測類型決定擴(kuò)展名存儲(chǔ)至非Web目錄;3.PHP配置限制上傳大小及臨時(shí)目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評(píng)論代碼 在PHP中評(píng)論代碼 Jul 18, 2025 am 04:57 AM

PHP註釋代碼常用方法有三種:1.單行註釋用//或#屏蔽一行代碼,推薦使用//;2.多行註釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧註釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時(shí)需注意閉合符號(hào)和避免嵌套。

See all articles