目錄
composer 是用來幹嘛的?
composer 是如何安裝的?
composer 套件是如何開發的?
在GitHub上建立一個專案
學習建立composer.json
创建项目编码内容
测试开发包
发布到 packagist 平台
composer 设置镜像地址
小结
首頁 開發工具 composer Composer 套件開發有這麼簡單?

Composer 套件開發有這麼簡單?

Feb 01, 2021 am 10:50 AM
composer

下面由composer教學欄位帶大家介紹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

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 可以使用两个方式创建,一种是 <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 = &#39;TB&#39;;	
        }	
        elseif ($num >= 1000000000)	
        {	
            $num = round($num / 1073741824, $precision);	
            $unit = &#39;GB&#39;;	
        }	
        elseif ($num >= 1000000)	
        {	
            $num = round($num / 1048576, $precision);	
            $unit = &#39;MB&#39;;	
        }	
        elseif ($num >= 1000)	
        {	
            $num = round($num / 1024, $precision);	
            $unit = &#39;KB&#39;;	
        }	
        else	
        {	
            return number_format($num).&#39; Bytes&#39;;	
        }	
        return number_format($num, $precision).&#39; &#39;.$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 &#39;../vendor/autoload.php&#39;;	
use \numberFormat;	
$number = &#39;102400010&#39;;	
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 https://php.cnpkg.org
登入後複製

小结

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

  1. composer 是用来干嘛的?

  2. composer 是如何安装的?

  3. composer 包是如何开发的?

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

以上是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這個插件,它完美地解決了我的緩存問題。

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

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

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

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

如何使用 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。

使用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

如何利用 Composer 簡化 CMS 開發:Lebenlabs/SimpleCMS 庫的實踐應用 如何利用 Composer 簡化 CMS 開發:Lebenlabs/SimpleCMS 庫的實踐應用 Apr 18, 2025 am 09:45 AM

在開發一個新的內容管理系統(CMS)時,我遇到了一個常見但棘手的問題:如何在不增加過多複雜性的情況下,快速搭建一個功能齊全的CMS。市面上有許多現成的CMS解決方案,但它們通常過於龐大,配置複雜,對於小型項目來說可能是一種負擔。經過一番探索,我發現了lebenlabs/simplecms這個庫,它通過Composer提供了一種簡潔而高效的解決方案。

See all articles