下面由composer教學欄位帶大家介紹Composer產生環境 ,希望對需要的朋友有幫助!
composer 是用來幹嘛的?
對於不了解composer的同學來說,一定會有這個疑問。
這個字常在網路上看到,特別是在GitHub 中,在使用<span class="typ" style="font-size:14px;">Laravel</span>
、 <span class="typ" style="font-size:14px;">Yii</span>
時也常看到這個詞,在安裝的時候推薦使用composer 安裝?難道只是安裝的時候使用嗎?我也使用過其他框架,為什麼 <span class="typ" style="font-size:14px;">Thinkphp</span>
、 <span class="typ" style="font-size:14px;">Codeigniter</span>
# 不用composer安裝呢?
帶著這些疑問,我們進行學習。
composer 官方網址:https://www.phpcomposer.com
composer 是 PHP(5.3 ) 用來管理依賴關係的工具。
長久以來,PHP的開源方式都是專案級的,就是說一開源就是一個項目,例如一整套的CMS(Dede、WordPress、discuz)、一整套框架(Thinkphp、Codeigniter)。為啥呢?其中一個很重要的原因是你不好拆開,如果拆開的話,沒有一個有效的管理工具組合起來,導致拆開的小模組大家無人問津。
然後 composer 出現了,它就是一個有效的管理工具,它負責管理大家拆開的小模組,然後進行有效的整合,使之成為一個完整的專案。
例如,記錄日誌使用 monolog/monolog ,HTTP client使用:guzzlehttp/guzzle 等等。
composer 套件的平台:https://packagist.org,這裡麵包含了大量的優秀的安裝包,我們就很輕鬆一個 composer 命令就可以將優秀的程式碼用到我們專案中來。
身為一個驕傲PHPer,我們總不能永遠只使用別人的開發包,我們必須自己動手開發一個包給別人用,給自己用。
我們既然知道了它有這麼多的好處,就讓我們去學習他吧,先從 composer 的安裝說起。
composer 是如何安裝的?
官方入門文件:https://docs.phpcomposer.com/00-intro.html
透過上述的方法,可以進行安裝完成。
接下來我們以 GitHub 結合 Composer 工具來進行範例講解如何開發一個 Composer 套件。
composer 套件是如何開發的?
例如,開發一個處理數字的 composer 套件。
在GitHub上建立一個專案
#登入GitHub(如果沒有帳號,請建立),點擊右上角“ ”,選擇“ New repository」。
在創建介面中,Repository name 填寫“numberFormat”,Description是選填的,暫時先不填, 接著在Public (GitHub推薦的方式,免費,所有人都能訪問)和Private(收費,指定人才能訪問,2019-01-09後對個人開發者免費了)中選擇“Public”,接著在勾選“Initialize this repository with a README”,點擊“Create Repository”按鈕後建立成功。
至此,表示在GitHub上已經建立了一個名為「numberFormat」的空專案。
接下來,需要將遠端的專案 clone 到本機(Git命令列、Git客戶端)進行編碼。
學習建立composer.json
composer.json 有哪些參數,如何寫,請參考文件:https://docs.phpcomposer.com/04-schema.html#composer.json
一個專案要呼叫開發包,透過composer.json就可以知道該樣去載入檔案。
composer.json 可以使用两个方式创建,一种是 <span class="pln" style="font-size:14px;">composer init</span>
,另一种是手工创建。
咱们一起先执行下 <span class="pln" style="font-size:14px;">composer init</span>
看看效果。
在本地创建numberFormat目录,然后 git clone 刚才创建的项目。
//进入到本地numberFormat目录 composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (<vendor>/<name>) [root/number-format]:number-format/number-format Description []:一个处理数字的包 Author [XinLiang <109760455@qq.com>, n to skip]: //回车 Minimum Stability []: //回车 Package Type (e.g. library, project, metapackage, composer-plugin) []: //回车 License []: //回车 Define your dependencies. Would you like to define your dependencies (require) interactively [yes]?no Would you like to define your dev dependencies (require-dev) interactively [yes]?no { "name": "number-format/number-format", "description": "一个处理数字的包", "authors": [ { "name": "XinLiang", "email": "109760455@qq.com" } ], "require": {} } Do you confirm generation [yes]? //回车
至此,本地numberFormat目录就看到 composer.json 文件了,当然可以直接在目录下按照这个格式进行手工创建,后期直接编辑该文件即可。
创建项目编码内容
开发包结构如下:
--src 源码目录(必须)
--tests 单元测试目录(非必须)
我们按照既定的目录结构去创建目录和文件,然后再到composer.json里面修改一下即可。
接下来,在src目录中创建一个类(NumberFormat.php):
/** * 数字格式化类 * @author XinLiang */ namespace numberFormat; class NumberFormat { /** * 格式化字节 * @param int $num 数字 * @param int $precision 精准度 * @return string */ public static function byte_format($num = 0, $precision = 1) { if ($num >= 1000000000000) { $num = round($num / 1099511627776, $precision); $unit = 'TB'; } elseif ($num >= 1000000000) { $num = round($num / 1073741824, $precision); $unit = 'GB'; } elseif ($num >= 1000000) { $num = round($num / 1048576, $precision); $unit = 'MB'; } elseif ($num >= 1000) { $num = round($num / 1024, $precision); $unit = 'KB'; } else { return number_format($num).' Bytes'; } return number_format($num, $precision).' '.$unit; } }
修改 composer.json
{ "name": "number-format/number-format", "description": "一个处理数字的包", "authors": [ { "name": "XinLiang", "email": "109760455@qq.com" } ], "minimum-stability": "dev", "require": { "php": ">=5.3.0" }, "autoload": { "psr-4": { "numberFormat\\": "src/" } }, "license": "MIT" }
至此,我们的开发包已经完成,接下来我们来测试下这个包是否可用。
测试开发包
在本地numberFormat目录下,通过 <span class="pln" style="font-size:14px;">composer install</span>
安装
composer install Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Writing lock file Generating autoload files //表示安装成功
惊奇的发现,在本地numberFormat目录多一个 <span class="pln" style="font-size:14px;">vendor</span>
目录。
在tests目录创建 NumberFormatTest.php
/** * 数字格式化测试类 * @author XinLiang */ require '../vendor/autoload.php'; use \numberFormat; $number = '102400010'; echo numberFormat\NumberFormat::byte_format($number); //输出:97.7 MB
至此,测试成功,接下来就是要发布到packagist平台,给广大开发者见面了。
发布到 packagist 平台
packagist.org 为 composer 安装包的平台(可用GitHub账号登录)。
现将本地代码提交到GitHub。
发布到 packagist 平台,登录后在首页的右上角有一个"Submit"按钮,点击即可进入开发包提交的界面。在“Repository URL (Git/Svn/Hg)”输入框中,输入GitHub项目的地址,点击“Check”按钮,稍微等待几秒钟,会显示验证成功,并显示出“Submit”按钮,点击即完成了开发包的提交了。
恭喜你,这个开发包可以在任何支持 composer 的PHP框架中使用了。
那么问题来了,刚才我们的包写的有的简陋,后期我们维护代码,新增代码还需要按照原来的方式操作一遍吗?
不!因为我们可以在GitHub平台设置代码更新,同时能让 packagist.org 自动更新,是不是很酷!
在GitHub中找到代码仓库,然后选择"settings" -> “Webhooks” ,默认是绑定自动更新的。
如果未绑定,可以这样设置:"settings" -> “Webhooks” -> "Add webhook" ->
Payload URL填写:“https://packagist.org/api/github”
Content type填写:“application/json”
Secret填写:“packagist提供的token”
其他的默认即可
点击“Add webhook” 完成。
至此,后期我们更新代码后会自动同步到 packagist.org 上。
//其他开发者可以这样获取包 composer require number-format/number-format:dev-master
为什么会有:dev-master,为什么引用其他的包不用这样设置?
因为我们引用的其他包都是稳定包,默认为:-stable。
是因为我们 composer.json 中设置了 minimum-stability 属性,这个可以了解下“版本约束”,在这就不多说了。
当我们在发布包后,如果获取不到报错怎么办,有可能是镜像的问题。
composer 设置镜像地址
//查看全局设置 composer config -gl //第一种:设置国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com //第二种:设置国内镜像 composer config -g repo.packagist composer https://packagist.laravel-china.org //第三种:设置国内镜像 composer config -g repos.packagist composer https://php.cnpkg.org
小结
通过这篇文章,解决了上述提到的三个问题:
composer 是用来干嘛的?
composer 是如何安装的?
composer 包是如何开发的?
看完后,是不是觉得 Composer 包开发原来这么简单,作为骄傲的程序员,去开发属于自己的 Composer 包吧!
以上是Composer 套件開發有這麼簡單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在處理PHP源碼分析的過程中,我遇到了一個棘手的問題:如何將PHP代碼轉換為更易於分析和處理的格式。我嘗試了多種方法,但效果都不理想。最後,通過使用Composer安裝theseer/tokenizer庫,我成功地將PHP源碼轉換為XML格式,極大地簡化了後續的分析工作。

Composer是一個PHP依賴管理工具,通過composer.json文件管理項目依賴。 1.安裝Composer:運行幾條命令並移動到全局路徑。 2.配置Composer:在項目根目錄創建composer.json文件並運行composerinstall。 3.依賴管理:通過composer.json指定庫及其版本,使用語義化版本號控制。 4.使用Autoloading:通過autoload字段定義類的自動加載規則,簡化開發。 5.包管理:支持私有庫管理,通過repositories字段定義私有庫地址

在開發PHP項目時,我們常常需要對代碼的執行時間進行監控,以優化性能。在我最近的一個項目中,我遇到了一個問題:需要在不同代碼段之間進行精確的計時,但手動實現計時器不僅繁瑣,而且容易出錯。經過一番探索,我發現了phpunit/php-timer這個庫,它通過Composer輕鬆集成,極大地簡化了我的工作。

在開發過程中,版本管理一直是個棘手的問題,尤其是在處理軟件包依賴時。最近,我在項目中遇到了一個關於版本控制的問題:需要精確地管理和比較不同軟件包的版本信息,確保項目能夠正確地依賴和升級。我嘗試了幾種方法,但效果不盡如人意。最終,我找到了phar-io/version這個庫,它完美地解決了我的問題。

在開發項目時,我常常需要使用一些新版本PHP的特性,但有時由於服務器環境的限制,不得不使用較低版本的PHP。這導致我無法使用某些新功能,比如PHP8.3中引入的json_validate和Override等。為了解決這個問題,我找到了Symfony的polyfill-php83庫,它讓我可以在低版本PHP中使用這些新功能。

在進行PHP項目開發時,統計代碼行數是一項常見的需求,尤其是在評估項目規模或進行代碼審查時。然而,手動統計不僅耗時且容易出錯。最近,我在項目中遇到了這個需求,嘗試了多種方法後,最終通過Composer安裝sebastian/lines-of-code庫,輕鬆解決了這一問題。

在開發PHP項目時,經常會遇到一些函數或方法執行時間過長,導致程序超時的問題。我曾嘗試了多種解決方案,但效果不盡如人意,直到我發現了phpunit/php-invoker庫。這個庫通過設置超時時間來調用可執行函數,徹底解決了我的難題。

在開發一個文件處理系統時,我遇到了一個棘手的問題:如何準確地檢測文件的MIME類型。最初,我嘗試使用PHP的內置函數mime_content_type()和finfo類,但發現這些方法在處理某些特殊文件時不夠穩定,導致系統誤判文件類型,影響了用戶體驗。經過一番探索,我找到了league/mime-type-detection這個庫,它為我的項目帶來了完美的解決方案。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版