如何使用 Composer 構建 Laravel 包?
介紹
Laravel 包是一組可重用的類,可以改進 Laravel 網站的功能。換句話說,一個包就是 WordPress 插件。Laravel 包旨在通過將可重用功能封裝在一組可在任何 Laravel 項目中使用的獨立類中來減少開發(fā)時間。
在本教程中:如何使用 Composer 構建 Laravel 包,我們將為聯(lián)系表單構建一個 Laravel 包。我們開始這個派對吧。
使用 Composer 構建 Laravel 包的先決條件
以下是使用 Composer 構建 Laravel 包的先決條件:
需要 Laravel v 5.5 或更高版本。
Composer 安裝在您的系統(tǒng)上。如果您還沒有Composer,可以在此處獲取它。
基本設置和安裝
因為包旨在為 Laravel 網站提供更多功能,所以第一步是構建 Laravel 網站。我們將使用 Composer 來設置它。查看官方Laravel 文檔以獲取更多安裝選項。
完成后,您需要配置您的 env 文件并指定您的應用程序密鑰和其他相關數(shù)據(jù)。在終端中使用以下命令或手動將 .env.example 的內容傳輸?shù)叫挛募⑵淞泶鏋?.env。
完成后,使用以下命令。
生成應用程序密鑰并配置數(shù)據(jù)庫詳細信息后,您的 .env 應該如下所示。
我們的基本 Laravel 應用程序現(xiàn)已設置。是時候開始處理我們的包了。
使用 Bacancy 開發(fā)高性能 Laravel 應用程序!
聘請 Laravel 開發(fā)人員,與我們一起見證您夢想產品的構建。我們擁有具有非凡問題技能的敬業(yè)開發(fā)人員。今天聯(lián)系我們!
項目結構
我們將設置我們包的基本要素?;旧嫌袃煞N方法可以實現(xiàn)這一點:
手動生成單個文件和文件夾
使用諸如此 CLI 實用程序之類的軟件包。
在這里,我們將手動生成文件和目錄以了解每個組件如何組合在一起。
這是我們包的文件夾結構。
從您的根目錄創(chuàng)建具有以下結構的文件夾。
因為更新 vendor 文件夾中的代碼不是一個好習慣,所以我們將在 packages /YourVendor/YourPackage/目錄而不是vendor/YourVendor/YourPackage/目錄之外執(zhí)行我們的所有工作。
當我們完成發(fā)布我們的包時,它將可以在 vendor 文件夾下下載。
YourVendor 是供應商的名稱,可能是您的姓名或您為其生成程序包的客戶或企業(yè)的名稱。
包名稱由 YourPackage 表示。在我們的例子中它將是聯(lián)系表。
讓我們開始創(chuàng)建將構成我們的包的文件和文件夾。
你的供應商
└── 聯(lián)系方式
└── 來源
├── 數(shù)據(jù)庫
│ └── 遷移
├── HTTP
│ └── 控制器
├── 車型
├── 資源
│ └── 瀏覽次數(shù)
└──路線
創(chuàng)建作曲家文件
我們現(xiàn)在將初始化 Composer。使用以下命令生成 composer.json。
因為它是交互式的,它會問你一系列問題來填寫你的composer.json文件。如果您不確定,請單擊回車以使用默認響應;如果您不確定,您可以稍后直接從 composer.json 文件更新它。
composer.json 文件現(xiàn)在應該如下所示。
{
“名稱”:“您的供應商/聯(lián)系表”,
"description": "laravel 的聯(lián)系表單包",
“作者”:[{
"name": "烏薩瑪帕特爾",
“電子郵件”:“ john.doe@email.com ”
}],
“要求”: {}}
我們需要通知 composer.json 自動加載我們的文件,因此將此代碼添加到您的 composer.json。
我們的 composer.json 文件現(xiàn)在應該看起來像這樣。
{
“名稱”:“您的供應商/聯(lián)系表”,
"description": "laravel 的聯(lián)系表單包",
“作者”:[{
"name": "烏薩瑪帕特爾",
“電子郵件”:“ john.doe@email.com ”
}],
“要求”: {},
“自動加載”:{
“psr-4”:{
"YourVendor\\Contactform\\": "src/"
}
}
}
創(chuàng)建一個空的 git 存儲庫以跟蹤之后的修改(我們稍后將添加遠程存儲庫)。使用以下命令。
創(chuàng)建服務提供者
讓我們從向包中添加一些文件開始。首先,我們必須為我們的包裹確定一個服務提供商。Laravel 使用一個服務提供者來確定哪些文件將被你的包加載和訪問。
在您的 src/子目錄中創(chuàng)建一個ContactFormServiceProvider.php文件
我們需要在我們的服務提供商中定義一些項目:
1. 命名空間(我們在 composer.json 自動加載中定義的)。
2.擴展(我們的服務提供者擴展的Laravel類)
3.每個服務提供者必須有的兩個強制方法(每個Laravel包服務提供者至少需要兩個方法:boot()和register())。
將以下代碼行添加到您的服務提供者類中。
注意:您可以在下面的代碼中將 YourVendor 替換為您自己的供應商名稱。
// ContactFormServiceProvider.php
<?php
命名空間 YourVendor\contactform;
使用 Illuminate\Support\ServiceProvider;
類 ContactFormServiceProvider 擴展 ServiceProvider {
公共功能引導()
{
}
公共功能寄存器()
{
}
}?>
我們需要通知 Laravel 如何加載我們的包并利用它的功能,因為我們還沒有部署它并且它還不在我們的 vendor 文件夾中,所以在 composer 中的 Laravel 項目的根目錄中。將以下代碼添加到您的 JSON。
“自動加載”:{
“類圖”:[
“數(shù)據(jù)庫/種子”,
“數(shù)據(jù)庫/工廠”
],
“psr-4”:{
"YourVendor\\Contactform\\": "packages/YourVendor/contactform/src",
“應用程序\\”:“應用程序/”
}
},
“自動加載開發(fā)”:{
“psr-4”:{
"YourVendor\\Contactform\\": "packages/YourVendor/contactform/src",
“測試\\”:“測試/”
}
},
根據(jù)你的 Laravel 版本,Laravel 可能會自動為你添加它。如果是這樣,請務必跳過它。
然后,在您的終端上,在應用程序的根目錄下運行以下命令。
讓我們檢查一下我們的包現(xiàn)在是否正確加載。讓我們創(chuàng)建一個路由并將其加載到ContactFormServiceProvider.php文件的啟動方法中。
// ContactFormServiceProvider.php
請注意以下事項:
文件所在的當前目錄稱為 __DIR__。
我們將為我們的包構建的路由文件夾,將存在于我們的 src 文件夾中,而不是默認的 Laravel 路由,在 routes/web.php 中被引用。
將以下代碼添加到我們的 package routes 文件夾中的 web.php 文件中。
<?php
// YourVendor\contactform\src\routes\web.php
Route::get('聯(lián)系人', function(){
return 'Hello from the contact form package';
});?>
然后,在我們的根config/app.php中,我們需要將新的服務提供者添加到提供者數(shù)組中,如下所示。
// 配置/app.php
'供應商'=> [
...,
App\Providers\RouteServiceProvider::類,
// 我們的新包類
YourVendor\Contactform\ContactFormServiceProvider::類,
],
運行應用
現(xiàn)在使用命令啟動 Laravel 應用程序。
在瀏覽器中轉到 localhost:8000/contact,您應該會看到如下內容:
Github 存儲庫:Laravel 包示例
現(xiàn)在我們知道我們的包裹正在正確加載我們需要創(chuàng)建我們的聯(lián)系表格。您可以在此Github 存儲庫中找到其余代碼。
結論
這是一個基本教程,介紹如何使用 Composer 構建 Laravel 包。有了新的理解,您可以創(chuàng)建更多令人驚嘆的包。
(言鼎科技)