在介紹如何寫composer包之前,大家可以通過composer命令使用圖文教程欄目來了解如何安裝composer及其相關(guān)使用介紹。

composer包怎么寫?
寫一個屬于自己的composer包
composer包適合在需要與其他依賴包配合的情況下使用。
我們下面就來寫一個自己的composer包,首先我們創(chuàng)建一個空的目錄,并且運行以下命令初始化一個空白的composer包
composer init
可以在命令窗口看到有返回提示;
需要輸入包名
This command will guide you through creating your composer.json config.`
Package name (<vendor>/<name>) :
我這里寫的是yancoo.cn/test,回車
需要輸入描述
Description []:
包的描述內(nèi)容
需要輸入作者
Author [宣言 <59419979@qq.com>, n to skip]:
該選項如果有默認(rèn)值 可以直接回車
需要輸入最低穩(wěn)定版本
Minimum Stability []:
該選項有可選值:stable, RC, beta, alpha, dev 一般填dev
需要輸入包類型
Package Type (e.g. library, project, metapackage, composer-plugin) []:
可選項在提示中已經(jīng)有了,我們一般選library填l即可
需要輸入開源協(xié)議
License []:
根據(jù)自己情況填寫,我們填A(yù)pache
設(shè)置包需要依賴的其他環(huán)境或者包
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
如果需要設(shè)置依賴環(huán)境或者其他包 則輸入yes回車,會讓你搜索,我們這里給包設(shè)置php版本必須大于5.6,所以搜索php。
Enter the version constraint to require(orleave blank to usethe latest version):
輸入最低要求版本號 >=5.6.0

如果需要設(shè)置多個環(huán)境要求,則重復(fù)搜索填寫即可,如果不需要了,則在Search for a package:不填寫內(nèi)容,直接回車即可
接下來設(shè)置依賴包
Would you like to define your dev dependencies (require-dev) interactively [yes]?
我們不需要 直接回車回車。
{
????"name": "yancoo.cn/test",
????"description": "This is a test package,form yancoo.cn,author is siam.",
????"type": "l",
????"require": {
????????"php": ">=5.6.0"
????},
????"license": "Apache",
????"authors": [
????????{
????????????"name": "宣言",
????????????"email": "59419979@qq.com"
????????}
????],
????"minimum-stability": "dev"
}
Do you confirm generation [yes]?
確認(rèn)信息,yes 回車 初始化完成
Do you confirm generation [yes]? yes
Would you like to install dependencies now [yes]? yes
安裝完成,可以看到我們的目錄生成了如下結(jié)構(gòu)。

vendor是composer存放包的地址,所有的包都存放在該路徑中統(tǒng)一管理,并且composer提供了命名空間自動加載的功能,我們在使用過程中只需要引入composer的統(tǒng)一入口文件即可
require"vendor/autoload.php";
但是我們也需要在包的配置文件中寫上需要自動加載哪個目錄才有效哈!
編輯composer.json文件

這里的路徑需要根據(jù)你自己的來定,也可以參考以上寫法即可。
寫完之后需要運行一下命令行composer dump-autoload更新composer的命名空間與文件夾映射關(guān)系。
上一步驟非常重要 漏了就不正常執(zhí)行了。
然后我們創(chuàng)建src文件夾,再創(chuàng)建siam文件夾,在里面創(chuàng)建Test.php文件
寫上命名空間 Siam; 根據(jù)psr-4規(guī)范,類名要與文件名相同。
<?php
//Test.php文件
namespaceSiam;
classTest
{
????functiontest()
????{
????????echo"Form Test -> test()";
????}
}
再在最外層寫下index.php測試文件,正確做法是創(chuàng)建demo文件夾 然后再寫測試文件。
<?php
require"vendor/autoload.php";
$Test= newSiam\Test();
$Test->test();
于是我們現(xiàn)在的文件目錄結(jié)構(gòu)如下,運行index.php正確得到內(nèi)容Form Test -> test()

可以根據(jù)你自己的想法來寫類,只需要注意命名空間的層級與文件夾層級相同,類名與文件名相同即可自動加載。
本文來自PHP中文網(wǎng)的composer使用教程欄目:https://www.php.cn/tool/composer/