Composer 套件開發有這麼簡單?

藏色散人
發布: 2021-02-01 10:51:34
轉載
2785 人瀏覽過

下面由composer教學欄位帶大家介紹Composer產生環境 ,希望對需要的朋友有幫助!

Composer 套件開發有這麼簡單?

composer 是用來幹嘛的?

對於不了解composer的同學來說,一定會有這個疑問。

這個字常在網路上看到,特別是在GitHub 中,在使用LaravelYii時也常看到這個詞,在安裝的時候推薦使用composer 安裝?難道只是安裝的時候使用嗎?我也使用過其他框架,為什麼ThinkphpCodeigniter# 不用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

Composer 套件開發有這麼簡單?

透過上述的方法,可以進行安裝完成。

接下來我們以 GitHub 結合 Composer 工具來進行範例講解如何開發一個 Composer 套件。

composer 套件是如何開發的?

例如,開發一個處理數字的 composer 套件。

在GitHub上建立一個專案

  1. #登入GitHub(如果沒有帳號,請建立),點擊右上角“ ”,選擇“ New repository」。

  2. 在創建介面中,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 可以使用两个方式创建,一种是composer init,另一种是手工创建。

咱们一起先执行下composer init看看效果。

在本地创建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 (/) [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目录下,通过composer install安装

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目录多一个vendor目录。

在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账号登录)。

  1. 现将本地代码提交到GitHub。

  2. 发布到 packagist 平台,登录后在首页的右上角有一个"Submit"按钮,点击即可进入开发包提交的界面。在“Repository URL (Git/Svn/Hg)”输入框中,输入GitHub项目的地址,点击“Check”按钮,稍微等待几秒钟,会显示验证成功,并显示出“Submit”按钮,点击即完成了开发包的提交了。

恭喜你,这个开发包可以在任何支持 composer 的PHP框架中使用了。

那么问题来了,刚才我们的包写的有的简陋,后期我们维护代码,新增代码还需要按照原来的方式操作一遍吗?

不!因为我们可以在GitHub平台设置代码更新,同时能让 packagist.org 自动更新,是不是很酷!

在GitHub中找到代码仓库,然后选择"settings" -> “Webhooks” ,默认是绑定自动更新的。

如果未绑定,可以这样设置:"settings" -> “Webhooks” -> "Add webhook" ->

  1. Payload URL填写:“https://packagist.org/api/github”

  2. Content type填写:“application/json”

  3. Secret填写:“packagist提供的token”

  4. 其他的默认即可

  5. 点击“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 //m.sbmmt.compkg.org
登入後複製

小结

通过这篇文章,解决了上述提到的三个问题:

  1. composer 是用来干嘛的?

  2. composer 是如何安装的?

  3. composer 包是如何开发的?

看完后,是不是觉得 Composer 包开发原来这么简单,作为骄傲的程序员,去开发属于自己的 Composer 包吧!

以上是Composer 套件開發有這麼簡單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!