前提條件:環境已安裝了composer
一、創建一個空的目錄。
二、創建composer包
進入命令窗口,切換到剛新創建的目錄位置,運行以下命令,初始化composer包
composer init
命令窗口返回提示;
This command will guide you through creating your composer.json config.`
Package name (<vendor>/<name>) :
這裏寫包的名稱,我寫的是cjc/test,回車
輸入描述
Description []:
隨便填,“This is my first composer package”
輸入作者
Author [tomorrow <[email protected]>, n to skip]:
如果有默認值,直接回車
輸入最低穩定版本
Minimum Stability []:
該選項有可選值:stable, RC, beta, alpha, dev 一般填dev
輸入包類型
Package Type (e.g. library, project, metapackage, composer-plugin) []: 1
可選項在提示中已經有了,我們一般選library,填 l 即可
輸入開源協議
License []:
這裏我填 Apache-2.0 , 記得帶上版本號,只填Apache後續會有問題,其它開源協議 點擊參考
設置包需要依賴的其他環境或者包
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
如過需要,則yes 回車。例設置php版本
Search for a package:
填寫 php
Enter the version constraint to require (or leave blank to use the latest version):
填寫 >=5.6.0
設置完成後,會繼續返回搜索包
Search for a package:
不需要再設置其它依賴或包,則直接回車
Would you like to define your dev dependencies (require-dev) interactively [yes]?
直接回車
{
"name": "cjc/test",
"description": "This is my first composer package",
"type": "l",
"require": {
"php": ">=5.6.0"
},
"license": "Apache-2.0",
"authors": [
{
"name": "tomorrow",
"email": "[email protected]"
}
],
"minimum-stability": "dev"
}
Do you confirm generation [yes]?
確認信息,直接yes 回車
Would you like to install dependencies now [yes]? yes
安裝完成,可以看到我們的目錄生成了如下結構。
vendor是composer存放包的地址,所有的包都存放在該路徑中統一管理。
並且composer提供了命名空間自動加載的功能,我們在使用過程中只需要引入composer的統一入口文件即可
編輯composer.json文件
{
"name": "tomorrow-sky/test",
"description": "This is cjc's first composer package.",
"type": "1",
"require": {
"php": ">=5.6.0"
},
"license": "Apache-2.0",
"authors": [
{
"name": "tomorrow-sky",
"email": "[email protected]"
}
],
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"Cjc\\": "src/cjc"
}
}
}
記得 psr-r 裏面, “Cjc\” 有兩個斜槓,不要去掉
【 這一步不要漏了哦 】
這裏的路徑需要根據你自己的來定,也可以參考以上寫法即可。
寫完之後需要運行一下命令行composer dump-autoload更新composer的命名空間與文件夾映射關係。
創建文件夾及功能
在根目錄(與composer.json 文件同級).
創建src目錄,再 src 裏面 創建cjc目錄,再 cjc 裏面創建Test.php文件。
命名空間,既是composer.json裏面寫的
<?php
//Test.php文件
namespace Cjc;
class Test
{
function test()
{
echo "This is my first composer package";
}
}
創建demo調用
在根目錄,創建demo文件夾,並在裏面創建index.php文件,編輯文件
<?php
require "../vendor/autoload.php";
$Test = new Cjc\Test();
$Test->test(); // echo "This is my first composer package"
可以根據你自己的想法來寫類,只需要注意命名空間的層級與文件夾層級相同,類名與文件名相同即可自動加載。
三、上傳composer包
1、首先在github上創建倉庫
2、將本地的composer包,發送到新創建的github倉庫上面
在本地 Git Bash 命令窗口輸入以下命令:
echo "# cjc_first_conposer" >> REMADE.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/tomorrow-sky/cjc_composer_package1.git
git push -u origin master
四、關聯composer倉庫
composer的官方倉庫是 https://packagist.org/
我們打開,並且註冊一個賬號。然後點擊右上角的submit。把地址填寫進去,點擊Check按鈕
如果成功,則會變成Submit按鈕,點擊後即可關聯。
五、發佈新版本(打標籤)
到這裏,我們的github倉庫與packagist已經建立了關聯,但是這個使用還是用不了的,因爲我們還沒有發佈正式版本!
需要在git上打標籤,才認爲我們發佈了一個新的版本,packagist纔會去拉取並且提供給別人安裝。
git打標籤需要運行以下命令
git tag -a v1.0.1 -m "first version"
git push origin v1.0.1
然後更新以下composer官方倉庫包
六、完成、在項目中引入
到此,我們的composer包,已經創建完成。
在項目中,使用
composer require xxx/xxx
即可引入我們自己的包了。