文章按照一下內容進行說明:
- 引入正在開發(fā)的包
- 發(fā)布打VCS和如何引用
- 編寫擴展包
擴展包開發(fā)說明
引入正在開發(fā)的包
- 在項目目錄中創(chuàng)建
packages目錄,需要開發(fā)的擴展包在此目錄中創(chuàng)建,如:

Screen Shot 2017-08-18 at 11.21.30 AM.png
- 在庫的根目錄需要創(chuàng)建
composer.json文件,寫庫的配置,如下(更多配置可以參考composer文檔):
{
"name": "mallto/easy-tool",
"description": "tools",
"type": "library",
"keywords": [
"laravel",
"tools"
],
"license": "MIT",
"authors": [
{
"name": "never615",
"email": "never615@gmail.com"
}
],
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*"
},
"autoload": {
"psr-4": {
"Mallto\\Tool\\": "src/"
}
}
}
- 在項目的
composer.json文件中添加:
{
...
repositories": [
{
"type": "path",
"url": "packages/mallto/easy-mall"
}
]
}
如:

Screen Shot 2017-08-18 at 11.33.22 AM.png
- 像平時引入庫一樣執(zhí)行命令
composer require mallto/easy-tool:*@dev(mallto/tool即庫中composer文件配置的name).執(zhí)行命令之后會在項目的vendor目錄引入你的庫了,只不過是軟鏈接到你的真實庫所在目錄的.
發(fā)布到 VCS 和引用
這部分內容其實composer的文檔就寫到很清楚:參見,這里補充說明一點,對于私有項目在github上是無法直接安裝的,需要在項目目錄創(chuàng)建auth.json文件,然后里面寫:
{
"github-oauth": {
"github.com": "[Personal access tokens]"
}
}
創(chuàng)建github私人訪問令牌的方式:參見
編寫擴展庫
擴展開發(fā)主要看laravel的擴展包開發(fā)文檔
一般一個庫的目錄結構如下(當然具體想怎么樣看你自己,只要有composer.json文件就行):

Screen Shot 2017-08-17 at 4.13.56 PM.png

Screen Shot 2017-08-17 at 4.34.44 PM.png
src目錄中,我是data目錄中放model,domain目錄中放一些復雜的邏輯,如果很簡單的邏輯就直接在controller中完成了.如下:

可以看到有會員和停車的邏輯代碼在這里是大頭,
Repository我也放到了這里,按理應該放在數(shù)據(jù)data層中.我是這樣考慮的,因為在laravel框架下,model的定義基本就是固定模板,定義好之后,我也比較少會反復修改它.在我寫一個模塊的邏輯的時候,比如會員部分,我基本上所有的邏輯改動都是在Member這個目錄中,也包括Repository的部分,這樣更加聚合.
在一個項目或者一個庫中,一般邏輯執(zhí)行的流程如下:
簡單邏輯下:路由->控制器(簡單邏輯直接控制器中編寫完成)
復雜邏輯下:路由->控制器->domain層(在根據(jù)需要細分)
其他如:隊列任務或者調度任務等里面的邏輯也會抽離到domain層中.